]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/extras/org_tree_js.pl
dettatching refs, hopefully staving off leaks in the browser
[working/Evergreen.git] / Open-ILS / src / extras / org_tree_js.pl
1
2 # turns the orgTree and orgTypes into js files
3
4 use OpenSRF::AppSession;
5 use OpenSRF::System;
6 use JSON;
7 use OpenILS::Utils::Fieldmapper;
8
9 die "usage: perl org_tree_js.pl <bootstrap_config>" unless $ARGV[0];
10 OpenSRF::System->bootstrap_client(config_file => $ARGV[0]);
11
12 my $ses = OpenSRF::AppSession->create("open-ils.storage");
13 my $tree = $ses->request("open-ils.storage.direct.actor.org_unit.retrieve.all.atomic")->gather(1);
14 my $types = $ses->request("open-ils.storage.direct.actor.org_unit_type.retrieve.all.atomic")->gather(1);
15
16 my $types_string = JSON->perl2JSON($types);
17 $types_string =~ s/\"/\\\"/g;
18
19 my $pile = "var _l = [";
20
21 my @array;
22 for my $o (@$tree) {
23         my ($i,$t,$p,$n) = ($o->id,$o->ou_type,$o->parent_ou,$o->name);
24         push @array, "[$i,$t,$p,\"$n\"]";
25 }
26 $pile .= join ',', @array;
27 $pile .= <<JS;
28 ];
29 var orgArraySearcher = {};
30 var globalOrgTree;
31 for (var i in _l) {
32         var x = new aou();
33         x.id(_l[i][0]);
34         x.ou_type(_l[i][1]);
35         x.parent_ou(_l[i][2]);
36         x.name(_l[i][3]);
37         orgArraySearcher[x.id()] = x;
38 }
39 for (var i in orgArraySearcher) {
40         var x = orgArraySearcher[i];
41         if (x.parent_ou() == null || x.parent_ou() == '') {
42                 globalOrgTree = x;
43                 continue;
44         } else {
45                 x.parent_ou(orgArraySearcher[x.parent_ou()]);
46         }
47         if (!x.parent_ou().children()) 
48                 x.parent_ou().children(new Array());
49         x.parent_ou().children().push(x);
50 }
51 function _tree_killer () {
52         globalOrgTree = null;
53         for (var i in orgArraySearcher) {
54                 x=orgArraySearcher[i];
55                 x.children(null);
56                 x.parent_ou(null);
57                 orgArraySearcher[i]=null;
58         }
59 }
60 JS
61
62 $pile .= "var globalOrgTypes = JSON2js(\"$types_string\");";
63
64 print $pile;
65
66
67 $ses->disconnect();