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 });