From 4f1074aec9e57b0df2cfd6b371e2517929cda090 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Fri, 14 Mar 2014 16:42:11 -0400 Subject: [PATCH] LP#1292705 trim unneeded fields from IDL2js Avoid sending fields in the web-published IDL (IDL2js) that have no value, as the keys in the JSON take up a lot of space. Also avoid repeating fields (selector) and default values (e.g. label defaults to name) where the client can reasonably apply the defaults locally. Signed-off-by: Bill Erickson Signed-off-by: Ben Shum --- Open-ILS/web/js/dojo/fieldmapper/Fieldmapper.js | 3 ++- Open-ILS/web/js/dojo/fieldmapper/IDL.js | 10 +++++++++- Open-ILS/xsl/fm_IDL2js.xsl | 16 +++++++--------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Open-ILS/web/js/dojo/fieldmapper/Fieldmapper.js b/Open-ILS/web/js/dojo/fieldmapper/Fieldmapper.js index 006bd09067..3ef0ad9d05 100644 --- a/Open-ILS/web/js/dojo/fieldmapper/Fieldmapper.js +++ b/Open-ILS/web/js/dojo/fieldmapper/Fieldmapper.js @@ -112,9 +112,10 @@ if(!dojo._hasResource["fieldmapper.Fieldmapper"]){ if (fieldmapper.IDL && fieldmapper.IDL.loaded) { this.Structure = fieldmapper.IDL.fmclasses[this.classname]; + var array_pos = 0; for (f in fieldmapper.IDL.fmclasses[this.classname].fields) { var field = fieldmapper.IDL.fmclasses[this.classname].fields[f]; - p = field.array_position; + p = array_pos++; this._fields.push( field.name ); this[field.name]=new Function('n', 'if(arguments.length==1)this.a['+p+']=n;return this.a['+p+'];'); } diff --git a/Open-ILS/web/js/dojo/fieldmapper/IDL.js b/Open-ILS/web/js/dojo/fieldmapper/IDL.js index 46f0241af1..b2793f0aa0 100644 --- a/Open-ILS/web/js/dojo/fieldmapper/IDL.js +++ b/Open-ILS/web/js/dojo/fieldmapper/IDL.js @@ -20,8 +20,16 @@ if(!dojo._hasResource["fieldmapper.IDL"]) { preload.push(c); fieldmapper.IDL.fmclasses[c] = window._preload_fieldmapper_IDL[c]; + if (!fieldmapper.IDL.fmclasses[c].label) { + fieldmapper.IDL.fmclasses[c].label = + fieldmapper.IDL.fmclasses[c].name; + } + window.fmclasses[c] = []; - dojo.forEach(fieldmapper.IDL.fmclasses[c].fields, function(obj){ window.fmclasses[c].push(obj.name); }); + dojo.forEach(fieldmapper.IDL.fmclasses[c].fields, function(obj){ + if (!obj.label) obj.label = obj.name; + window.fmclasses[c].push(obj.name); + }); if (classlist && classlist.length) classlist = dojo.filter(classlist, function(x){return x != c;}); diff --git a/Open-ILS/xsl/fm_IDL2js.xsl b/Open-ILS/xsl/fm_IDL2js.xsl index 1a857bf1ba..ecc374fad5 100644 --- a/Open-ILS/xsl/fm_IDL2js.xsl +++ b/Open-ILS/xsl/fm_IDL2js.xsl @@ -19,7 +19,7 @@ var _preload_fieldmapper_IDL = {}; for (var c in _preload_fieldmapper_IDL) { var x = _preload_fieldmapper_IDL[c]; x.field_map = {}; var p = x.fields.length; - for (var n in {isnew:1,ischanged:1,isdeleted:1}) x.fields[p] = {name:n,type:'field',virtual:true,array_position:p++}; + for (var n in {isnew:1,ischanged:1,isdeleted:1}) x.fields[p] = {name:n,virtual:true}; for (var f in x.fields) x.field_map[x.fields[f].name] = x.fields[f]; } @@ -36,13 +36,15 @@ for (var c in _preload_fieldmapper_IDL) { - :{name:"",label:"",restrict_primary:"",virtual:,pkey:"",pkey_sequence:"",} + :{name:"",label:"",restrict_primary:"",virtual:true,pkey:"",pkey_sequence:"",} fields:[,] ,permacrud:{"":{},} -{name:"",label:"",datatype:"",primitive:"",selector:"",array_position:"",,virtual:,required:,i18n:} + +{name:"",label:"",primitive:true,selector:"",virtual:true,required:true,i18n:true,datatype:""} perms:['',] @@ -50,10 +52,7 @@ for (var c in _preload_fieldmapper_IDL) { - - type:"link", - type:"field" - + type:"link",, key:"","class":"",reltype:"" @@ -74,6 +73,5 @@ for (var c in _preload_fieldmapper_IDL) { - - + -- 2.43.2