1 RedQueryBuilderFactory.create({
  2 	meta : {
  3 		tables : [ {
  4 			"name" : "PERSON",
  5 			"label" : "Person",
  6 			"columns" : [ {
  7 				"name" : "NAME",
  8 				"label" : "Name",
  9 				"type" : "STRING",
 10 				"size" : 10
 11 			}, {
 12 				"name" : "DOB",
 13 				"label" : "Date of birth",
 14 				"type" : "DATE"
 15 			}, {
 16 				"name" : "SEX",
 17 				"label" : "Sex",
 18 				"type" : "STRING",
 19 				"editor" : "SELECT"
 20 			}, {
 21 				"name" : "CATEGORY",
 22 				"label" : "Category",
 23 				"type" : "REF",
 24 			}  ],
 25 			fks : []
 26 		} ],
 27 
 28 		types : [ {
 29 			"name" : "STRING",
 30 			"editor" : "TEXT",
 31 			"operators" : [ {
 32 				"name" : "=",
 33 				"label" : "is",
 34 				"cardinality" : "ONE"
 35 			}, {
 36 				"name" : "<>",
 37 				"label" : "is not",
 38 				"cardinality" : "ONE"
 39 			}, {
 40 				"name" : "LIKE",
 41 				"label" : "like",
 42 				"cardinality" : "ONE"
 43 			}, {
 44 				"name" : "<",
 45 				"label" : "less than",
 46 				"cardinality" : "ONE"
 47 			}, {
 48 				"name" : ">",
 49 				"label" : "greater than",
 50 				"cardinality" : "ONE"
 51 			} ]
 52 		}, {
 53 			"name" : "DATE",
 54 			"editor" : "DATE",
 55 			"operators" : [ {
 56 				"name" : "=",
 57 				"label" : "is",
 58 				"cardinality" : "ONE"
 59 			}, {
 60 				"name" : "<>",
 61 				"label" : "is not",
 62 				"cardinality" : "ONE"
 63 			}, {
 64 				"name" : "<",
 65 				"label" : "before",
 66 				"cardinality" : "ONE"
 67 			}, {
 68 				"name" : ">",
 69 				"label" : "after",
 70 				"cardinality" : "ONE"
 71 			} ]
 72 		}, {
 73 			"name" : "REF",
 74 			"editor" : "SELECT",
 75 			"operators" : [ {
 76 				"name" : "IN",
 77 				"label" : "any of",
 78 				"cardinality" : "MULTI"
 79 			}]
 80 		}  ]
 81 	},
 82 	onSqlChange : function(sql, args) {
 83 		var out = sql + '\r\n';
 84 		for (var i = 0; i < args.length; i++) {
 85 			var arg = args[i];
 86 			out += 'arg' + i;
 87 			if (arg != null) {
 88 				out += ' type=' + Object.prototype.toString.call(arg) + ' toString=' + arg;
 89 			} else {
 90 				out += ' null';
 91 			}
 92 			out += '\r\n';
 93 		}
 94 		document.getElementById("debug").value = out;
 95 	},
 96 	enumerate : function(request, response) {
 97 		if (request.columnName == 'CATEGORY') {
 98 			response([{value:'A', label:'Small'}, {value:'B', label:'Medium'}]);
 99 		} else {
100 			response([{value:'M', label:'Male'}, {value:'F', label:'Female'}]);
101 		}
102 	},
103 	editors : [ {
104 		name : 'DATE',
105 		format : 'dd.MM.yyyy'
106 	} ]
107 });