]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/staff/admin/server/config/metabib_field_virtual_map.js
LP#1744385: Search and Result Display improvements
[working/Evergreen.git] / Open-ILS / web / js / ui / default / staff / admin / server / config / metabib_field_virtual_map.js
1 angular.module('egAdminConfig',
2     ['ngRoute','ui.bootstrap','egCoreMod','egUiMod','egGridMod','egFmRecordEditorMod'])
3
4 .controller('MetabibFieldVirtualMap',
5        ['$scope','$q','$timeout','$location','$window','$uibModal','egCore','egGridDataProvider',
6         'egConfirmDialog',
7 function($scope , $q , $timeout , $location , $window , $uibModal , egCore , egGridDataProvider ,
8          egConfirmDialog) {
9
10     egCore.startup.go(); // standalone mode requires manual startup
11
12     $scope.cmf = null;
13
14     $scope.virt_field = $location.search().cmf || '';
15     if ($scope.virt_field) egCore.pcrud.retrieve('cmf', $scope.virt_field).then(function(c) { $scope.cmf = c });
16
17     $scope.$watch('virt_field', function(newVal, oldVal) {
18         if (newVal != oldVal) {
19             egCore.pcrud.retrieve('cmf', newVal).then(function(c) { $scope.cmf = c });
20             $scope.gridControls.setQuery(generateQuery($scope.virt_field));
21             $scope.gridControls.refresh();
22         }
23     });
24
25     $scope.new_record = function() {
26         spawn_editor();
27     }
28
29     $scope.edit_record = function(items) {
30         if (items.length != 1) return;
31         spawn_editor(items[0].id);
32     }
33
34     spawn_editor = function(id) {
35         var templ;
36         if (arguments.length == 1) {
37             templ = '<eg-edit-fm-record idl-class="cmfvm" mode="update" record-id="id" on-save="ok" on-cancel="cancel"></eg-edit-fm-record>';
38         } else {
39             templ = '<eg-edit-fm-record idl-class="cmfvm" mode="create" on-save="ok" on-cancel="cancel"></eg-edit-fm-record>';
40         }
41         gridControls = $scope.gridControls;
42         $uibModal.open({
43             template : templ,
44             backdrop: 'static',
45             controller : [
46                         '$scope', '$uibModalInstance',
47                 function($scope ,  $uibModalInstance) {
48                     $scope.id = id;
49
50                     $scope.ok = function($event) {
51                         $uibModalInstance.close();
52                         gridControls.refresh();
53                     }
54     
55                     $scope.cancel = function($event) {
56                         $uibModalInstance.dismiss();
57                     }
58                 }
59             ]
60         });
61     }
62
63     $scope.delete_record = function(selected) {
64         if (!selected || !selected.length) return;
65
66         egCore.pcrud.retrieve('cmfvm', selected[0].id).then(function(rec) {
67             egConfirmDialog.open(
68                 egCore.strings.EG_CONFIRM_DELETE_RECORD_TITLE,
69                 egCore.strings.EG_CONFIRM_DELETE_RECORD_BODY,
70                 { id : rec.id() } // TODO replace with selector if available?
71             ).result.then(function() {
72                 egCore.pcrud.remove(rec).then(function() {
73                     $scope.gridControls.refresh();
74                 });
75             });
76         });
77     }
78
79     function generateQuery(virt_field) {
80         var q = { 'id' : { '!=' : null } };
81
82         if (virt_field) {
83             q.virtual = virt_field;
84         }
85
86         return q;
87     }
88
89     $scope.gridControls = {
90         activateItem : function (i) { return $scope.edit_record([i]) },
91         setQuery : function() {
92             return generateQuery($scope.virt_field);
93         },
94         setSort : function() {
95             return ['label'];
96         }
97     }
98 }])