Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

querybuilder.js 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Unibase;
  11. (function (Unibase) {
  12. let Platform;
  13. (function (Platform) {
  14. let DataSources;
  15. (function (DataSources) {
  16. let Components;
  17. (function (Components) {
  18. class QueryBuilder extends Platform.Core.BaseComponent {
  19. constructor() {
  20. super();
  21. this.QueryBuilder_Columns = [];
  22. this.QueryBuilder_Filters = [];
  23. this.queryBuilderString = "";
  24. this._reportmanager = Platform.Analytics.Managers.ReportManager.Instance();
  25. }
  26. cssFiles() {
  27. return [];
  28. }
  29. jsFiles() {
  30. return ['platform/analytics/managers/reportmanager.js'];
  31. }
  32. html(id, containerid) {
  33. var html = '<div id="QueryBuilder" class="bg-white hidden"></div>';
  34. return html;
  35. }
  36. load(id, containerid, callback) {
  37. var instance = this;
  38. instance.loadQueryBuilderDiv(null);
  39. }
  40. loadReportColumns(reportid) {
  41. return __awaiter(this, void 0, void 0, function* () {
  42. var instance = this;
  43. if (reportid) {
  44. return yield instance._reportmanager.getColumns(reportid).then(function (response) {
  45. instance.QueryBuilder_Columns = response.result;
  46. });
  47. }
  48. });
  49. }
  50. loadDoctypeColumns(doctypeid) {
  51. return __awaiter(this, void 0, void 0, function* () {
  52. var instance = this;
  53. if (doctypeid) {
  54. return yield Unibase.Platform.DataSources.Managers.DocTypeManager.Instance().getDocProperties(doctypeid).then(function (response) {
  55. instance.QueryBuilder_Columns = response.result;
  56. });
  57. }
  58. });
  59. }
  60. loadQueryBuilderDiv(querystring) {
  61. var instance = this;
  62. $("#QueryBuilder").html(`<div id="builder"></div><div id="result" class="mt-20"></div>`);
  63. var ReportId = instance.ReportId;
  64. $("#DatalistColumns_Search").val("");
  65. instance.loadReportColumns(ReportId).then(function () {
  66. let qelem;
  67. qelem = $('#builder');
  68. for (var i = 0; i < instance.QueryBuilder_Columns.length; i++) {
  69. let element = instance.QueryBuilder_Columns[i];
  70. let dataType = element.DataType;
  71. let Values = [];
  72. let Input = 'text';
  73. let Plugin = 'text';
  74. if (dataType == 1 || dataType == 2) {
  75. dataType = "string";
  76. }
  77. else if (dataType == 3 || dataType == 4) {
  78. dataType = "integer";
  79. }
  80. else if (dataType == 5) {
  81. dataType = "double";
  82. }
  83. else if (dataType == 6) {
  84. dataType = "date";
  85. }
  86. else if (dataType == 7) {
  87. dataType = "datetime";
  88. }
  89. else if (dataType == 9) {
  90. dataType = "string";
  91. Values = ["true", "false"];
  92. Input = 'radio';
  93. Plugin = 'text';
  94. }
  95. else {
  96. dataType = "string";
  97. }
  98. instance.QueryBuilder_Filters.push({
  99. id: element.ReportColumnId,
  100. label: element.ReportColumnName,
  101. field: element.ReportColumnName,
  102. type: dataType,
  103. size: 30,
  104. unique: true,
  105. input: Input,
  106. plugin: Plugin,
  107. values: Values,
  108. });
  109. }
  110. qelem.queryBuilder({
  111. filters: instance.QueryBuilder_Filters,
  112. });
  113. if (querystring != "" && querystring != null) {
  114. instance.queryBuilderString = querystring;
  115. }
  116. if (instance.queryBuilderString != "" && instance.queryBuilderString != null) {
  117. instance.queryBuilderString = instance.queryBuilderString.replace(/ILIKE/g, "LIKE");
  118. qelem.queryBuilder('setRulesFromSQL', instance.queryBuilderString);
  119. let params = qelem.queryBuilder('getSQL', 'named(@)').params;
  120. var i = 0;
  121. $.each(params, function (key, value) {
  122. let id = $("[id^='builder_rule_']")[i].id;
  123. value = value.toString().replace(/%/g, "");
  124. $("#" + id + " [name='" + id + "_value_0']").append("<option selected='selected'>" + value + "</option>");
  125. i++;
  126. });
  127. }
  128. $('.parse-json').on('click', function () {
  129. instance.queryBuilderString = qelem.queryBuilder('getSQL', false, true).sql.replace(/\n/g, " ").replace(/LIKE/g, "ILIKE");
  130. });
  131. $('#btn-reset').on('click', function () {
  132. instance.queryBuilderString = "";
  133. qelem.queryBuilder('reset');
  134. });
  135. $("#builder_group_0").addClass("col-sm-12 mt-20");
  136. });
  137. }
  138. loadQueryBuilderDivByDoctypeId(querystring) {
  139. return __awaiter(this, void 0, void 0, function* () {
  140. var instance = this;
  141. $("#QueryBuilder").html(`<div id="builder"></div><div id="result" class="mt-20"></div>`);
  142. var DoctypeId = instance.DoctypeId;
  143. $("#DatalistColumns_Search").val("");
  144. return yield instance.loadDoctypeColumns(DoctypeId).then(function () {
  145. let qelem;
  146. qelem = $('#builder');
  147. for (var i = 0; i < instance.QueryBuilder_Columns.length; i++) {
  148. let element = instance.QueryBuilder_Columns[i];
  149. let dataType = element.DataTypeId;
  150. let Values = [];
  151. let Input = 'text';
  152. let Plugin = 'text';
  153. if (dataType == 1 || dataType == 2) {
  154. dataType = "string";
  155. }
  156. else if (dataType == 3 || dataType == 4) {
  157. dataType = "integer";
  158. }
  159. else if (dataType == 5) {
  160. dataType = "double";
  161. }
  162. else if (dataType == 6) {
  163. dataType = "date";
  164. }
  165. else if (dataType == 7) {
  166. dataType = "datetime";
  167. }
  168. else if (dataType == 9) {
  169. dataType = "string";
  170. Values = ["true", "false"];
  171. Input = 'radio';
  172. Plugin = 'text';
  173. }
  174. else {
  175. dataType = "string";
  176. }
  177. instance.QueryBuilder_Filters.push({
  178. id: element.DocPropertyId,
  179. label: element.DocPropertyName,
  180. field: element.DocPropertyName,
  181. type: dataType,
  182. size: 30,
  183. unique: true,
  184. input: Input,
  185. plugin: Plugin,
  186. values: Values,
  187. });
  188. }
  189. qelem.queryBuilder({
  190. filters: instance.QueryBuilder_Filters
  191. });
  192. if (querystring != "" && querystring != null) {
  193. instance.queryBuilderString = querystring;
  194. }
  195. if (instance.queryBuilderString != "" && instance.queryBuilderString != null) {
  196. instance.queryBuilderString = instance.queryBuilderString.replace(/ILIKE/g, "LIKE");
  197. qelem.queryBuilder('setRulesFromSQL', instance.queryBuilderString);
  198. let params = qelem.queryBuilder('getSQL', 'named(@)').params;
  199. var i = 0;
  200. $.each(params, function (key, value) {
  201. let id = $("[id^='builder_rule_']")[i].id;
  202. value = value.toString().replace(/%/g, "");
  203. $("#" + id + " [name='" + id + "_value_0']").append("<option selected='selected'>" + value + "</option>");
  204. i++;
  205. });
  206. }
  207. $('.parse-json').on('click', function () {
  208. instance.queryBuilderString = qelem.queryBuilder('getSQL', false, true).sql.replace(/\n/g, " ").replace(/LIKE/g, "ILIKE");
  209. });
  210. $('#btn-reset').on('click', function () {
  211. instance.queryBuilderString = "";
  212. qelem.queryBuilder('reset');
  213. });
  214. $("#builder_group_0").addClass("col-sm-12 mt-20");
  215. });
  216. });
  217. }
  218. static Instance() {
  219. if (this._instance === undefined)
  220. this._instance = new Unibase.Platform.DataSources.Components.QueryBuilder();
  221. return this._instance;
  222. }
  223. }
  224. Components.QueryBuilder = QueryBuilder;
  225. })(Components = DataSources.Components || (DataSources.Components = {}));
  226. })(DataSources = Platform.DataSources || (Platform.DataSources = {}));
  227. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  228. })(Unibase || (Unibase = {}));