]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/dojo/fieldmapper/dojoData.js
the change from 'for (var foo in bar)' to 'for (var foo = 0; foo < bar.length; foo...
[working/Evergreen.git] / Open-ILS / web / js / dojo / fieldmapper / dojoData.js
1 /*
2 # ---------------------------------------------------------------------------
3 # Copyright (C) 2008  Georgia Public Library Service / Equinox Software, Inc
4 # Mike Rylander <miker@esilibrary.com>
5
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 # ---------------------------------------------------------------------------
16 */
17
18 if(!dojo._hasResource['fieldmapper.dojoData']){
19
20         dojo._hasResource['fieldmapper.dojoData'] = true;
21         dojo.provide('fieldmapper.dojoData');
22         dojo.require('fieldmapper.Fieldmapper');
23         dojo.require('fieldmapper.hash');
24
25
26         function _fromStoreItem (data) {
27                 this.fromHash(data);
28
29                 for (var i = 0; this._ignore_fields && i < this._ignore_fields.length; i++)
30                         this[this._ignore_fields[i]](null);
31
32                 for (var i = 0; this._fields && i < this._fields.length; i++) {
33                         if (dojo.isArray( this[this._fields[i]]() ))
34                                 this[this._fields[i]]( this[this._fields[i]]()[0] );
35                 }
36                 return this;
37         }
38
39     function _initStoreData(label, params) {
40                 if (!params) params = {};
41                 if (!params.identifier) params.identifier = this.Identifier;
42                 if (!label) label = params.label;
43                 if (!label) label = params.identifier;
44                 return { label : label, identifier : params.identifier, items : [] };
45     }
46
47     function _toStoreItem(fmObj, params) {
48                 if (!params) params = {};
49         return fmObj.toHash(true, params.virtualFields);
50     }
51
52         function _toStoreData (list, label, params) {
53                 if (!params) params = {};
54         var data = this.initStoreData(label, params);
55
56                 for (var i = 0; list && i < list.length; i++) data.items.push( list[i].toHash(true, params.virtualFields) );
57
58                 if (params.children && params.parent) {
59                         var _hash_list = data.items;
60
61                         var _find_root = {};
62                         for (var i = 0; _hash_list && i < _hash_list.length; i++) {
63                                 _find_root[_hash_list[i][params.identifier]] = _hash_list[i]; 
64                         }
65
66                         var item_data = [];
67                         for (var i = 0; _hash_list && i < _hash_list.length; i++) {
68                                 var obj = _hash_list[i]
69                                 obj[params.children] = [];
70
71                                 for (var j = 0; _hash_list && j < _hash_list.length; j++) {
72                                         var kid = _hash_list[j];
73                                         if (kid[params.parent] == obj[params.identifier]) {
74                                                 obj[params.children].push( { _reference : kid[params.identifier] } );
75                                                 kid._iskid = true;
76                                                 if (_find_root[kid[params.identifier]]) delete _find_root[kid[params.identifier]];
77                                         }
78                                 }
79
80                                 item_data.push( obj );
81                         }
82
83                         for (var j = 0; _find_root && j < _find_root.length; j++) {
84                                 _find_root[j]['_top'] = 'true';
85                                 if (!_find_root[j][params.parent])
86                                         _find_root[j]['_trueRoot'] = 'true';
87                         }
88
89                         data.items = item_data;
90                 }
91
92                 return data;
93         }
94
95         for (var i in fmclasses) fieldmapper[i].prototype.fromStoreItem = _fromStoreItem;
96         for (var i in fmclasses) fieldmapper[i].toStoreData = _toStoreData;
97         for (var i in fmclasses) fieldmapper[i].toStoreItem = _toStoreItem;
98         for (var i in fmclasses) fieldmapper[i].prototype.toStoreItem = function ( args ) { return _toStoreItem(this, args) };
99         for (var i in fmclasses) fieldmapper[i].initStoreData = _initStoreData;
100
101         fieldmapper.aou.prototype._ignore_fields = ['children'];
102         fieldmapper.aout.prototype._ignore_fields = ['children'];
103         fieldmapper.pgt.prototype._ignore_fields = ['children'];
104
105         fieldmapper.aou.toStoreData = function (list, label) {
106                 if (!label) label = 'shortname';
107                 return _toStoreData.call(this, list, label, { 'parent' : 'parent_ou', 'children' : 'children' });
108         }
109
110         fieldmapper.aout.toStoreData = function (list, label) {
111                 if (!label) label = 'name';
112                 return _toStoreData.call(this, list, label, { 'parent' : 'parent', 'children' : 'children' });
113         }
114
115         fieldmapper.pgt.toStoreData = function (list, label) {
116                 if (!label) label = 'name';
117                 return _toStoreData.call(this, list, label, { 'parent' : 'parent', 'children' : 'children' });
118         }
119
120         /*
121         ppl.toStoreData = function (list, label) {
122                 if (!label) label = 'code';
123                 return _toStoreData(list, label, {});
124         }
125         */
126
127 }