]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/dojo/fieldmapper/dojoData.js
Apply jshint suggestions for cleanup to dojo.fieldmapper
[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
23     if(!dojo._hasResource["fieldmapper.Fieldmapper"]) {
24
25         /* XXX Content loaded in Fieldmapper */
26         /* XXX deprecate this file **/
27
28         dojo.require('fieldmapper.Fieldmapper');
29         dojo.require('fieldmapper.hash');
30
31         function _fromStoreItem (data) {
32             this.fromHash(data);
33
34             var i;
35             for (i = 0; this._ignore_fields && i < this._ignore_fields.length; i++)
36                 this[this._ignore_fields[i]](null);
37
38             for (i = 0; this._fields && i < this._fields.length; i++) {
39                 if (dojo.isArray( this[this._fields[i]]() ))
40                     this[this._fields[i]]( this[this._fields[i]]()[0] );
41             }
42             return this;
43         }
44
45         function _initStoreData(label, params) {
46             if (!params) params = {};
47             if (!params.identifier) params.identifier = this.Identifier;
48             if (!label) label = params.label;
49             if (!label) label = params.identifier;
50             return { label : label, identifier : params.identifier, items : [] };
51         }
52
53         function _toStoreItem(fmObj, params) {
54             if (!params) params = {};
55             return fmObj.toHash(true, params.virtualFields);
56         }
57
58         function _toStoreData (list, label, params) {
59             if (!params) params = {};
60             var data = this.initStoreData(label, params);
61
62             var i, j;
63             for (i = 0; list && i < list.length; i++) data.items.push( list[i].toHash(true, params.virtualFields) );
64
65             if (params.children && params.parent) {
66                 var _hash_list = data.items;
67
68                 var _find_root = {};
69                 for (i = 0; _hash_list && i < _hash_list.length; i++) {
70                     _find_root[_hash_list[i][params.identifier]] = _hash_list[i]; 
71                 }
72
73                 var item_data = [];
74                 for (i = 0; _hash_list && i < _hash_list.length; i++) {
75                     var obj = _hash_list[i];
76                     obj[params.children] = [];
77
78                     for (j = 0; _hash_list && j < _hash_list.length; j++) {
79                         var kid = _hash_list[j];
80                         if (kid[params.parent] == obj[params.identifier]) {
81                             obj[params.children].push( { _reference : kid[params.identifier] } );
82                             kid._iskid = true;
83                             if (_find_root[kid[params.identifier]]) delete _find_root[kid[params.identifier]];
84                         }
85                     }
86
87                     item_data.push( obj );
88                 }
89
90                 for (j in _find_root) {
91                     _find_root[j]['_top'] = 'true';
92                     if (!_find_root[j][params.parent])
93                         _find_root[j]['_trueRoot'] = 'true';
94                 }
95
96                 data.items = item_data;
97             }
98
99             return data;
100         }
101
102         for (var i in fmclasses) {
103             fieldmapper[i].prototype.fromStoreItem = _fromStoreItem;
104             fieldmapper[i].toStoreData = _toStoreData;
105             fieldmapper[i].toStoreItem = _toStoreItem;
106             fieldmapper[i].prototype.toStoreItem = function ( args ) { return _toStoreItem(this, args); };
107             fieldmapper[i].initStoreData = _initStoreData;
108         }
109
110         if (fieldmapper.aou) fieldmapper.aou.prototype._ignore_fields = ['children'];
111         if (fieldmapper.aout) fieldmapper.aout.prototype._ignore_fields = ['children'];
112         if (fieldmapper.pgt) fieldmapper.pgt.prototype._ignore_fields = ['children'];
113
114         fieldmapper.aou.toStoreData = function (list, label) {
115             if (!label) label = 'shortname';
116             return _toStoreData.call(this, list, label, { 'parent' : 'parent_ou', 'children' : 'children' });
117         };
118
119         fieldmapper.aout.toStoreData = function (list, label) {
120             if (!label) label = 'name';
121             return _toStoreData.call(this, list, label, { 'parent' : 'parent', 'children' : 'children' });
122         };
123
124         fieldmapper.pgt.toStoreData = function (list, label) {
125             if (!label) label = 'name';
126             return _toStoreData.call(this, list, label, { 'parent' : 'parent', 'children' : 'children' });
127         };
128
129         /*
130         ppl.toStoreData = function (list, label) {
131             if (!label) label = 'code';
132             return _toStoreData(list, label, {});
133         }
134         */
135
136     }
137 }