]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/acq/common/tag_manager.js
LP#1380803 Update PO summary amounts
[working/Evergreen.git] / Open-ILS / web / js / ui / default / acq / common / tag_manager.js
1 dojo.require("openils.PermaCrud");
2 dojo.require("dojo.data.ItemFileReadStore");
3
4 if (typeof(localeStrings) == "undefined") {
5     dojo.requireLocalization("openils.acq", "acq");
6     var localeStrings = dojo.i18n.getLocalization("openils.acq", "acq");
7 }
8
9 function TagManager(displayNode) {
10     var self = this;
11     this.tagCache = {};
12     this.displayNode = displayNode;
13
14     this.pcrud = new openils.PermaCrud();
15
16 // selected (by checkbox) id's from an autogrid of objects:
17 //        return grid.getSelectedItems().map(function(o) { return o.id[0]; });
18
19     this.displayFund = function(fund) {
20         if (!fund) {
21             this.displayNode.innerHTML = localeStrings.FUND_NOT_YET_LOADED;
22             return;
23         }
24
25         dojo.empty(this.displayNode);
26         fund.tags().forEach(
27             function(o) {
28                 dojo.place(self.renderTagMapping(o), self.displayNode, "last");
29             }
30         );
31     };
32
33     this.renderTagMapping = function(mapping) {
34         var span = dojo.create(
35             "span", {
36                 "id": "oils-acq-fund-tag-mapping-" + mapping.id(),
37                 "className": "oils-acq-fund-tag",
38                 "innerHTML": mapping.tag().name()
39             }
40         );
41         dojo.create(
42             "a", {
43                 "href": "javascript:void(0);",
44                 "innerHTML": "X",
45                 "onclick": function() { self.deleteMapping(mapping); },
46             },
47             span, "last"
48         );
49         return span;
50     };
51
52     this.deleteMapping = function(mapping) {
53         if (confirm(localeStrings.CONFIRM_DELETE_MAPPING)) {
54             this.pcrud.eliminate(
55                 mapping, {
56                     "oncomplete": function(r) {
57                         dojo.destroy(
58                             "oils-acq-fund-tag-mapping-" + mapping.id()
59                         );
60                         fund.tags(
61                             fund.tags().filter(
62                                 function(o) { return o.id() != mapping.id(); }
63                             )
64                         );
65                     },
66                     "onerror": function() {
67                         /* XXX does onerror not actually work? */
68                         alert(localeStrings.COULD_NOT_DELETE_MAPPING);
69                     }
70                 }
71             );
72         }
73     };
74
75     this.addMapping = function(fund, tag) {
76         var mapping = new acqftm();
77         mapping.fund(fund.id());
78         mapping.tag(tag.id());
79
80         this.pcrud.create(
81             mapping, {
82                 "onerror": function(r) {
83                     /* XXX does onerror not actually work? */
84                     alert(localeStrings.COULD_NOT_CREATE_MAPPING);
85                 },
86                 "oncomplete": function(r, list) {
87                     mapping = list[0]; /* get the new mapping's ID this way */
88                     mapping.tag(tag); /* re-"flesh" */
89                     fund.tags().push(mapping); /* save local reference */
90                     dojo.place(
91                         self.renderTagMapping(mapping),
92                         self.displayNode, "last"
93                     );
94                 }
95             }
96         );
97     };
98
99     this.prepareTagSelector = function(selector) {
100         this.pcrud.search(
101             "acqft", {
102                 "owner": fieldmapper.aou.orgNodeTrail(
103                     fieldmapper.aou.findOrgUnit(openils.User.user.ws_ou()),
104                     true /* asId */
105                 )
106             }, {
107                 "async": true,
108                 "oncomplete": function(r) {
109                     if ((r = openils.Util.readResponse(r))) {
110                         selector.store = new dojo.data.ItemFileReadStore(
111                             {"data": acqft.toStoreData(r)}
112                         );
113                         selector.startup();
114                     }
115                 }
116             }
117         );
118     };
119 }