From: miker Date: Tue, 1 Apr 2008 03:37:32 +0000 (+0000) Subject: dojo-ificiation X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=a171b788a60a5619d3f02a6e9c3d46bea74f04cb;p=Evergreen.git dojo-ificiation git-svn-id: svn://svn.open-ils.org/ILS/branches/dojo-admin@9169 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/conify/js/fieldmapper/addFromHash.js b/Open-ILS/web/conify/js/fieldmapper/addFromHash.js index c74237867a..f298d22106 100644 --- a/Open-ILS/web/conify/js/fieldmapper/addFromHash.js +++ b/Open-ILS/web/conify/js/fieldmapper/addFromHash.js @@ -1,12 +1,33 @@ +if(!dojo._hasResource['fieldmapper.hash']){ -function _fromHash (_hash) { - var _fields = fmclasses[this.classname]; - for ( var i=0; i < _fields.length; i++) { - if (_hash[_fields[i]] != null) - this[_fields[i]]( _hash[_fields[i]] ); + dojo._hasResource['fieldmapper.hash'] = true; + dojo.provide('fieldmapper.hash'); + dojo.require('fieldmapper.Fieldmapper'); + + function _fromHash (_hash) { + var _fields = fmclasses[this.classname]; + for ( var i=0; i < _fields.length; i++) { + if (_hash[_fields[i]] != null) + this[_fields[i]]( _hash[_fields[i]] ); + } + return this; + } + + for (var i in fmclasses) { + window[i].prototype.fromHash = _fromHash; + window[i].prototype.toHash = _toHash; } - return this; -} -for (var i in fmclasses) window[i].prototype.fromHash = _fromHash; + function _toHash () { + var _hash = {}; + var _fields = fmclasses[this.classname]; + for ( var i=0; i < _fields.length; i++) { + if (this[_fields[i]]() != null) + _hash[_fields[i]] = '' + this[_fields[i]](); + } + return _hash; + } + + +} diff --git a/Open-ILS/web/conify/js/fieldmapper/addFromStoreItem.js b/Open-ILS/web/conify/js/fieldmapper/addFromStoreItem.js index 230a7391b0..04b8f35ce8 100644 --- a/Open-ILS/web/conify/js/fieldmapper/addFromStoreItem.js +++ b/Open-ILS/web/conify/js/fieldmapper/addFromStoreItem.js @@ -1,20 +1,104 @@ +if(!dojo._hasResource['fieldmapper.dojoData']){ -function _fromStoreItem (data) { - this.fromHash(data); + dojo._hasResource['fieldmapper.dojoData'] = true; + dojo.provide('fieldmapper.dojoData'); + dojo.require('fieldmapper.Fieldmapper'); + dojo.require('fieldmapper.hash'); - for (var i in this._ignore_fields) - this[this._ignore_fields[i]](null); - var _fields = fmclasses[this.classname]; - for ( var i=0; i < _fields.length; i++) { - if (dojo.isArray( this[_fields[i]]() )) - this[_fields[i]]( this[_fields[i]]()[0] ); + function _fromStoreItem (data) { + this.fromHash(data); + + for (var i in this._ignore_fields) + this[this._ignore_fields[i]](null); + + var _fields = fmclasses[this.classname]; + for ( var i=0; i < _fields.length; i++) { + if (dojo.isArray( this[_fields[i]]() )) + this[_fields[i]]( this[_fields[i]]()[0] ); + } + return this; } - return this; -} -for (var i in fmclasses) window[i].prototype.fromStoreItem = _fromStoreItem; + function _toStoreData (list, label, params) { + + if (!params) params = {}; + + // a sane default + if (!params.identifier) params.identifier = 'id'; + if (!label) label = params.label; + if (!label) label = params.identifier; + + var data = { label : label, identifier : params.identifier, items : [] }; + + for (var i in list) data.items.push( list[i].toHash() ); + + if (params.children && params.parent) { + var _hash_list = data.items; + + var _find_root = {}; + for (var i in _hash_list) { + _find_root[_hash_list[i][params.identifier]] = _hash_list[i]; + } + + var item_data = []; + for (var i in _hash_list) { + var obj = _hash_list[i] + obj[params.children] = []; + + for (var j in _hash_list) { + var kid = _hash_list[j]; + if (kid[params.parent] == obj[params.identifier]) { + obj[params.children].push( { _reference : kid[params.identifier] } ); + kid._iskid = true; + if (_find_root[kid[params.identifier]]) delete _find_root[kid[params.identifier]]; + } + } + + item_data.push( obj ); + } + + for (var j in _find_root) { + _find_root[j]['_top'] = 'true'; + if (!_find_root[j][params.parent]) + _find_root[j]['_trueRoot'] = 'true'; + } + + data.items = item_data; + } -aou.prototype._ignore_fields = ['children']; -aout.prototype._ignore_fields = ['children']; -pgt.prototype._ignore_fields = ['children']; + return data; + } + + for (var i in fmclasses) window[i].prototype.fromStoreItem = _fromStoreItem; + + aou.prototype._ignore_fields = ['children']; + aout.prototype._ignore_fields = ['children']; + pgt.prototype._ignore_fields = ['children']; + + // set up the defaults + for (var i in fmclasses) window[i].toStoreData = _toStoreData; + + aou.toStoreData = function (list, label) { + if (!label) label = 'shortname'; + return _toStoreData(list, label, { 'parent' : 'parent_ou', 'children' : 'children' }); + } + + aout.toStoreData = function (list, label) { + if (!label) label = 'name'; + return _toStoreData(list, label, { 'parent' : 'parent', 'children' : 'children' }); + } + + pgt.toStoreData = function (list, label) { + if (!label) label = 'name'; + return _toStoreData(list, label, { 'parent' : 'parent', 'children' : 'children' }); + } + + /* + ppl.toStoreData = function (list, label) { + if (!label) label = 'code'; + return _toStoreData(list, label, {}); + } + */ + +}