2 # ---------------------------------------------------------------------------
3 # Copyright (C) 2008 Georgia Public Library Service / Equinox Software, Inc
4 # Mike Rylander <miker@esilibrary.com>
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.
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 # ---------------------------------------------------------------------------
18 if(!dojo._hasResource['fieldmapper.dojoData']){
20 dojo._hasResource['fieldmapper.dojoData'] = true;
21 dojo.provide('fieldmapper.dojoData');
22 dojo.require('fieldmapper.Fieldmapper');
23 dojo.require('fieldmapper.hash');
26 function _fromStoreItem (data) {
29 for (var i = 0; this._ignore_fields && i < this._ignore_fields.length; i++)
30 this[this._ignore_fields[i]](null);
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] );
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 : [] };
47 function _toStoreItem(fmObj, params) {
48 if (!params) params = {};
49 return fmObj.toHash(true, params.virtualFields);
52 function _toStoreData (list, label, params) {
53 if (!params) params = {};
54 var data = this.initStoreData(label, params);
56 for (var i = 0; list && i < list.length; i++) data.items.push( list[i].toHash(true, params.virtualFields) );
58 if (params.children && params.parent) {
59 var _hash_list = data.items;
62 for (var i = 0; _hash_list && i < _hash_list.length; i++) {
63 _find_root[_hash_list[i][params.identifier]] = _hash_list[i];
67 for (var i = 0; _hash_list && i < _hash_list.length; i++) {
68 var obj = _hash_list[i]
69 obj[params.children] = [];
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] } );
76 if (_find_root[kid[params.identifier]]) delete _find_root[kid[params.identifier]];
80 item_data.push( obj );
83 for (var j in _find_root) {
84 _find_root[j]['_top'] = 'true';
85 if (!_find_root[j][params.parent])
86 _find_root[j]['_trueRoot'] = 'true';
89 data.items = item_data;
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;
101 fieldmapper.aou.prototype._ignore_fields = ['children'];
102 fieldmapper.aout.prototype._ignore_fields = ['children'];
103 fieldmapper.pgt.prototype._ignore_fields = ['children'];
105 fieldmapper.aou.toStoreData = function (list, label) {
106 if (!label) label = 'shortname';
107 return _toStoreData.call(this, list, label, { 'parent' : 'parent_ou', 'children' : 'children' });
110 fieldmapper.aout.toStoreData = function (list, label) {
111 if (!label) label = 'name';
112 return _toStoreData.call(this, list, label, { 'parent' : 'parent', 'children' : 'children' });
115 fieldmapper.pgt.toStoreData = function (list, label) {
116 if (!label) label = 'name';
117 return _toStoreData.call(this, list, label, { 'parent' : 'parent', 'children' : 'children' });
121 ppl.toStoreData = function (list, label) {
122 if (!label) label = 'code';
123 return _toStoreData(list, label, {});