]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/common/js/fmgen.js
added abortAllRequests which does just that.
[Evergreen.git] / Open-ILS / web / opac / common / js / fmgen.js
1 /* generate fieldmapper javascript classes.  This expects a global variable
2         called 'fmclasses' to be fleshed with the classes we need to build */
3
4 function Fieldmapper() {}
5
6 var errorstr = "Attempt to build fieldmapper object with non-array";
7
8 Fieldmapper.prototype.clone = function() {
9         var obj = new this.constructor();
10
11         for( var i in this.a ) {
12                 var thing = this.a[i];
13                 if(thing == null) continue;
14
15                 if( thing._isfieldmapper ) {
16                         obj.a[i] = thing.clone();
17                 } else {
18
19                         if(instanceOf(thing, Array)) {
20                                 obj.a[i] = new Array();
21
22                                 for( var j in thing ) {
23
24                                         if( thing[j]._isfieldmapper )
25                                                 obj.a[i][j] = thing[j].clone();
26                                         else
27                                                 obj.a[i][j] = thing[j];
28                                 }
29                         } else {
30                                 obj.a[i] = thing;
31                         }
32                 }
33         }
34         return obj;
35 }
36 Fieldmapper.prototype.isnew = function(n) { if(arguments.length == 1) this.a[0] =n; return this.a[0]; }
37 Fieldmapper.prototype.ischanged = function(n) { if(arguments.length == 1) this.a[1] =n; return this.a[1]; }
38 Fieldmapper.prototype.isdeleted = function(n) { if(arguments.length == 1) this.a[2] =n; return this.a[2]; }
39 function FMEX(message) { this.message = message; }
40 FMEX.toString = function() { return "FieldmapperException: " + this.message + "\n"; }
41
42 var string = "";
43 for( var cl in fmclasses ) {
44         string += cl + ".prototype = new Fieldmapper(); " + 
45                                                 cl + ".prototype.constructor = " + cl + ";" +
46                                                 cl + ".baseClass = Fieldmapper.constructor;" +
47                                                 "function " + cl + "(a) { " +
48                                                         "this.classname = \"" + cl + "\";" +
49                                                         "this._isfieldmapper = true;" +
50                                                         "if(a) { if(a.constructor == Array) this.a = a; else throw new FMEX(errorstr);} else this.a = []}"; 
51
52         string += cl + "._isfieldmapper=true;";
53
54         for( var pos in fmclasses[cl] ) {
55                 var p = parseInt(pos) + 3;
56                 var field = fmclasses[cl][pos];
57                 string += cl + ".prototype." + field + 
58                         "=function(n){if(arguments.length == 1)this.a[" + 
59                         p + "]=n;return this.a[" + p + "];};";
60         }
61 }
62 eval(string);
63
64