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.

datalistbuilder.js 103KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515
  1. var SelectedDocProperties = [];
  2. var SelectedDoctypes = [];
  3. var SelectedTables = [];
  4. var SelectedJoins = [];
  5. var SelectedGroups = [];
  6. var SelectedConditions = [];
  7. var doctypelist = Array();
  8. var Unibase;
  9. (function (Unibase) {
  10. let Platform;
  11. (function (Platform) {
  12. let DataSources;
  13. (function (DataSources) {
  14. let Components;
  15. (function (Components) {
  16. class DatalistBuilder extends Platform.Core.BaseComponent {
  17. constructor() {
  18. super();
  19. this.IsWhere = false;
  20. this.IsGroupBy = false;
  21. this.IsAutoData = true;
  22. this.IsInternalDataList = false;
  23. this.HasIdentityFilter = false;
  24. this.EnableInsideWhere = false;
  25. this._datalistManager = DataSources.Managers.DataListManager.Instance();
  26. }
  27. jsFiles() {
  28. return ["platform/datasources/requests/datalist.js", "platform/datasources/infos/datalist.js", "platform/datasources/enums/relationtype.js", "platform/datasources/enums/queryparserenums.js", "platform/datasources/requests/queryparser.js",
  29. "platform/datasources/infos/queryparser.js", "platform/datasources/managers/datalistmanager.js", "platform/datasources/components/queryparser/queryparser.js", "platform/datasources/components/queryparser/queryparser.js", "platform/datasources/components/datalistbuilder/customfilters.js", "platform/datasources/components/datalistbuilder/datalistbuilder.template.js"];
  30. }
  31. cssFiles() {
  32. return [];
  33. }
  34. html(id, containerid) {
  35. return `<div class="bl-datalist-builder container-fluid pa-0">
  36. <nav class="bl-nav bg-teal text-white bl-nav-left">
  37. <div class="header pa-10" id="doctype_header">
  38. <span id="doctype_columnheader"class="font-weight-400"><strong>Tables</strong></span>
  39. <input type="text" id="txt-doctypesearch" placeholder="Search" class="hidden txt-doctypesearch">
  40. <span class="pull-right"id="bt_DoctypeSearch"><i class="fa fa-search"></i></span>
  41. <span class="pull-right hidden"id="bt_DoctypeSearchclose"><i class="fa fa-times"></i></span>
  42. </div>
  43. <div class="col-sm" id="column-container">
  44. <div class="bl-dd mt-10" id="nestable2">
  45. <ul class="dd-list" id="ul_doctypeList" style="overflow: hidden auto; z-index: 0;"></ul>
  46. </div>
  47. </div>
  48. </nav>
  49. <nav id="bl-nav-right-wrap" data-simplebar class="bl-nav bl-nav-right bg-light pa-5 pb-20 simple-scroll-bar">
  50. <div id="bl-nav-right"></div>
  51. <div class="header">Properties</div>
  52. </nav>
  53. <div class="datalist-builder-container">
  54. <div id="bl-datalist_error"></div>
  55. <div class="bg-white shadow-bottom bl-datalist-header">
  56. <div class="pull-right">
  57. <button class="btn btn-icon mr-5" id="btn-CustomFilters"><i class="fa fa-filter"></i></button>
  58. <button class="btn btn-icon mr-5" id="btn-DatalistPreview"><i class="fa fa-eye"></i></button>
  59. </div>
  60. <div id="tab-container" class="tab-container"></div>
  61. </div>
  62. <div class="datalist-builder-body bg-white">
  63. <div class="tab-content h-100 bg-default">
  64. <div id="designer-container" class="tab-pane fade h-50 in active show"><div id="canvas" class="h-50"></div></div>
  65. <div id="sql-container" class="tab-pane fade h-50"><textarea class="sql-textarea" style="width:100%;height:100%;"></textarea></div>
  66. <div id="storedprocedure-container" class="tab-pane fade h-50"><textarea class="storedprocedure-textarea" style="width:100%;height:100%;"></textarea></div>
  67. <div id="datalist_newsql_container_wrapper" class="tab-pane show fade h-100"><div id="bl-datalist_error"></div><div id="newsql_container"></div></div>
  68. <div class="table-canvas" id="table-canvas">
  69. </div>
  70. </div>
  71. </div>
  72. <div class="footer bg-white"><button id="btn-datalist-builder-close" class="btn-datalistbuilder-close btn btn-secondary btn-sm mr-auto">Close</button>
  73. <button id="btn-preview-close" class="btn-datalist_preview-close btn btn-secondary btn-sm mr-auto hidden">Close Preview</button>
  74. <button class="btn btn-primary btn-sm" id="btn-SaveDatalist">Save Datalist</button>
  75. </div></div></div>`;
  76. }
  77. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  78. this.init(Pk_Value);
  79. }
  80. load(id, containerid, callback) {
  81. this._queryParser = Components.QueryParser.Instance();
  82. this._customfilters = Components.CustomFilters.Instance();
  83. $("#newsql_container").append(this._queryParser.getInitialSelectHtml(false));
  84. $("#" + containerid).find(".datalist-builder-body").height($(window).outerHeight() - 100);
  85. $("#" + containerid).find(".table-canvas").addClass(containerid + "-table-canvas");
  86. $("#" + containerid).find(".table-canvas").addClass("hidden");
  87. $("#btn-datalist-builder-close").click(function () {
  88. $('#' + containerid).modal('hide');
  89. $('#' + containerid).remove();
  90. instance._customfilters.customFilters = [];
  91. });
  92. $("#canvas").css({ "left": "auto", "width": "100%", "overflow-x": "hidden", "height": "100%" });
  93. var instance = Unibase.Platform.DataSources.Components.DatalistBuilder.Instance();
  94. instance.loadChartIcons();
  95. instance.loadTabs(containerid);
  96. instance.loadRightNav();
  97. instance.loadInstalledApps();
  98. let table;
  99. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('libs/tabulator/js/tabulator.min.js', function () {
  100. table = instance.initTable(containerid);
  101. });
  102. $('#' + containerid).find("#btn-DatalistPreview").click(function () {
  103. if (Number($('.DataSourceType').val()) == 0) {
  104. $('.datalist-builder-body').add('.chart-metrics').click(function () {
  105. $("#Bizgaze-messageInfo").fadeOut(2000, "swing");
  106. });
  107. return MessageHelper.Instance().showError("Please select DataSourceType", 'bl-datalist_error');
  108. }
  109. $("#btn-datalist-builder-close").addClass("hidden");
  110. $("#btn-preview-close").removeClass("hidden");
  111. if ($("#" + containerid).find("#sql-container").hasClass("show"))
  112. instance.load_data(containerid, table);
  113. else
  114. instance.buildQuery(containerid);
  115. });
  116. $("#" + containerid).find("#datalist_design").click(function () {
  117. $("#" + containerid).find(".sql-textarea").val("");
  118. $("#" + containerid).find("#table-container").addClass("hidden");
  119. });
  120. $('#' + containerid).find("#btn-BuildQuery").click(function () {
  121. if ($("#" + containerid).find("#sql-container").hasClass("show")) {
  122. $("#" + containerid).find("#table-container").removeClass("hidden");
  123. instance.load_data(containerid, table);
  124. }
  125. else {
  126. instance.buildQuery(containerid);
  127. }
  128. });
  129. $('#' + containerid).find("#btn-SaveDatalist").click(function () {
  130. instance.saveDataList(containerid);
  131. });
  132. $("#btn-preview-close").click(function () {
  133. if ($("#" + containerid).find("#sql-container").hasClass("show")) {
  134. $("#" + containerid).find("#table-container").addClass("hidden");
  135. $("#" + containerid).find("#datalist-table").remove();
  136. $("#" + containerid).find(".tab-content").removeClass("hidden");
  137. $("#btn-preview-close").addClass("hidden");
  138. $("#btn-datalist-builder-close").removeClass("hidden");
  139. $("#" + containerid).find(".datalist-builder-body").find("#span_error").remove();
  140. }
  141. else {
  142. $("#" + containerid).find("#datalist-table").remove();
  143. $("#" + containerid).find(".tab-content").removeClass("hidden");
  144. $("#" + containerid).find(".table-container").addClass("hidden");
  145. $("#btn-preview-close").addClass("hidden");
  146. $("#btn-datalist-builder-close").removeClass("hidden");
  147. $("#" + containerid).find(".datalist-builder-body").find("#span_error").remove();
  148. }
  149. });
  150. $("#txt_SelectColumnName").select2({
  151. placeholder: 'Select Contact Columns',
  152. });
  153. $('#' + containerid).find("#bt_DoctypeSearch").click(function () {
  154. $('#' + containerid).find("#txt-doctypesearch").removeClass("hidden");
  155. $('#' + containerid).find("#doctype_columnheader").addClass("hidden");
  156. $('#' + containerid).find("#bt_DoctypeSearchclose").removeClass("hidden");
  157. });
  158. $('#' + containerid).find("#bt_DoctypeSearchclose").click(function () {
  159. $('#' + containerid).find("#txt-doctypesearch").addClass("hidden");
  160. $('#' + containerid).find("#doctype_columnheader").removeClass("hidden");
  161. $('#' + containerid).find("#bt_DoctypeSearchclose").addClass("hidden");
  162. $('#' + containerid).find("#txt-doctypesearch").val('');
  163. instance.getDoctypes(containerid, 0);
  164. });
  165. $('#' + containerid).find(".txt-doctypesearch").unbind("input");
  166. $('#' + containerid).find("#txt-doctypesearch").on('input', function () {
  167. instance.getDoctypes(containerid, 0);
  168. });
  169. $("#chk_IsFlatTable").change(function () {
  170. if ($("#chk_IsFlatTable").is(":checked") == true) {
  171. $("#div_SpName").removeClass("hidden");
  172. $("#div_Scheduler").removeClass("hidden");
  173. }
  174. else {
  175. $("#div_SpName").addClass("hidden");
  176. $("#div_Scheduler").addClass("hidden");
  177. }
  178. });
  179. $("#chk_Scheduler").change(function () {
  180. if ($("#chk_Scheduler").is(":checked") == true) {
  181. $("#div_TenureValue").removeClass("hidden");
  182. $("#div_TenureType").removeClass("hidden");
  183. $("#div_StartingDate").removeClass("hidden");
  184. }
  185. else {
  186. $("#div_TenureValue").addClass("hidden");
  187. $("#div_TenureType").addClass("hidden");
  188. $("#div_StartingDate").addClass("hidden");
  189. }
  190. });
  191. $("#" + containerid).find("#table-container").addClass("hidden");
  192. $("#isAutoData_checkbox").click(function () {
  193. if ($('#isAutoData_checkbox').prop('checked') == false) {
  194. instance.IsAutoData = false;
  195. $('#isAutoData_checkbox').prop('checked', false);
  196. }
  197. else {
  198. instance.IsAutoData = true;
  199. $('#isAutoData_checkbox').prop('checked', true);
  200. }
  201. });
  202. $("#iswhere_checkbox").click(function () {
  203. if ($('#iswhere_checkbox').prop('checked') == false) {
  204. instance.IsWhere = false;
  205. $('#iswhere_checkbox').prop('checked', false);
  206. }
  207. else {
  208. instance.IsWhere = true;
  209. $('#iswhere_checkbox').prop('checked', true);
  210. }
  211. });
  212. $("#isGroupBy_checkbox").click(function () {
  213. if ($('#isGroupBy_checkbox').prop('checked') == false) {
  214. instance.IsGroupBy = false;
  215. $('#isGroupBy_checkbox').prop('checked', false);
  216. }
  217. else {
  218. instance.IsGroupBy = true;
  219. $('#isGroupBy_checkbox').prop('checked', true);
  220. }
  221. });
  222. $("#enableInsideWhere_checkbox").click(function () {
  223. if ($('#enableInsideWhere_checkbox').prop('checked') == false) {
  224. instance.EnableInsideWhere = false;
  225. $('#enableInsideWhere_checkbox').prop('checked', false);
  226. }
  227. else {
  228. instance.EnableInsideWhere = true;
  229. $('#enableInsideWhere_checkbox').prop('checked', true);
  230. }
  231. });
  232. $("#hasidentityfilter_checkbox").click(function () {
  233. if ($('#hasidentityfilter_checkbox').prop('checked') == false) {
  234. instance.HasIdentityFilter = false;
  235. $('#hasidentityfilter_checkbox').prop('checked', false);
  236. }
  237. else {
  238. instance.HasIdentityFilter = true;
  239. $('#hasidentityfilter_checkbox').prop('checked', true);
  240. }
  241. });
  242. $("#internaldatalist_checkbox").click(function () {
  243. if ($('#internaldatalist_checkbox').prop('checked') == false) {
  244. instance.IsInternalDataList = false;
  245. $('#internaldatalist_checkbox').prop('checked', false);
  246. }
  247. else {
  248. instance.IsInternalDataList = true;
  249. $('#internaldatalist_checkbox').prop('checked', true);
  250. }
  251. });
  252. $("#datalist_newsql_container_wrapper").mousedown(this._queryParser.mouseDown.bind(this._queryParser));
  253. $("#datalist_newsql_container_wrapper").on("change", this._queryParser.changeEvent.bind(this._queryParser));
  254. $("#btn-CustomFilters").click(function () {
  255. instance.fileCacheHelper.loadJsFile("libs/querybuilder/query-builder.standalone.min.js", function () {
  256. instance.navigationHelper.popup(id, '', Unibase.Platform.DataSources.Components.CustomFilters.Instance(), null, Platform.Helpers.Size.Large);
  257. });
  258. });
  259. }
  260. loadDataListForm(iscreate) {
  261. var Pk_Value = 0;
  262. if (!iscreate) {
  263. Pk_Value = Unibase.Themes.Providers.DetailHelper.recordId;
  264. }
  265. this.init(Pk_Value);
  266. }
  267. init(Pk_Value = 0) {
  268. var _fileCacheHelper = this.fileCacheHelper;
  269. _fileCacheHelper.loadCssFile("platform/datasources/components/datalistbuilder/style.datalistbuilder.css", null);
  270. _fileCacheHelper.loadCssFile("libs/jquery/ui/jquery-ui.min.css", null);
  271. _fileCacheHelper.loadCssFile("libs/tabulator-tables/css/bootstrap/tabulator_bootstrap4.min.css", null);
  272. _fileCacheHelper.loadCssFile("libs/querybuilder/query-builder.default.css", null);
  273. _fileCacheHelper.loadCssFile("libs/flowy/styles.css", function () {
  274. _fileCacheHelper.loadCssFile("libs/flowy/flowy.min.css", function () {
  275. _fileCacheHelper.loadJsFile("libs/flowy/flowy.js", function () {
  276. _fileCacheHelper.loadJsFile("platform/datasources/components/datalistbuilder/main.js", function () {
  277. });
  278. });
  279. });
  280. });
  281. this.render(Pk_Value, null);
  282. }
  283. loadInstalledApps() {
  284. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  285. AutoCompleteHelper.getHelper().Create("#InstalledApp_AutoComplete_DataList", "#hfAutoComplete_InstalledApp", url, null);
  286. AutoCompleteHelper.getHelper().Create("#InstalledApp_AutoComplete_DataList", "#hfAutoComplete_InstalledApp", url, null);
  287. AutoCompleteHelper.getHelper().Create("#dependecyapps", "#hfAutoCompleteId_dependency", url, null);
  288. }
  289. render(datalistid, callback) {
  290. var instance = this;
  291. instance.DataListId = datalistid;
  292. this.navigationHelper.popup(datalistid, '', instance, () => {
  293. if (datalistid != 0) {
  294. Unibase.Platform.DataSources.Managers.DataListManager.Instance().getDataList(datalistid).then((response) => {
  295. var data = response.result;
  296. $("#datalist_sql").click();
  297. $(".sql-textarea").text(data.QueryString);
  298. $(".Datalistname").val(data.DataListName).prop("readonly", true).css("cursor", "not-allowed");
  299. if (data.DataListTypeId == 5) {
  300. $('.option_externalapi').removeClass('hidden');
  301. $(".DatalistType").val(data.DataListTypeId);
  302. $('.DatalistType').attr('disabled', 'true');
  303. }
  304. $(".DatalistType").val(data.DataListTypeId);
  305. $(".DataSourceType").val(data.DataSourceId);
  306. $("#txt_parameters").val(data.Parameters);
  307. $('.TableType').val(data.TableTypeId);
  308. if (data.IsCommon) {
  309. $("#Iscommon_checkbox").prop('checked', true);
  310. }
  311. if (data.InstalledAppId != 0) {
  312. Unibase.Platform.Apps.Managers.AppManager.Instance().getInstallApp(data.InstalledAppId).then(function (appres) {
  313. var res = appres.result;
  314. if (res != "" && res != null) {
  315. $("#InstalledApp_AutoComplete_DataList").append(`<option value="` + res.InstalledAppId + `">` + res.AppTitle + `</option>`);
  316. $("#InstalledApp_AutoComplete_DataList").val(res.InstalledAppId).trigger("change");
  317. }
  318. });
  319. }
  320. Unibase.Platform.DataSources.Managers.DataListManager.Instance().getprimarykey(datalistid).then(function (response) {
  321. if (response.result != null)
  322. $(".PrimaryKeyColumn").val(response.result.ColumnName);
  323. });
  324. if (data.IsAutoData) {
  325. instance.IsAutoData = true;
  326. $('#isAutoData_checkbox').prop('checked', true);
  327. }
  328. else {
  329. instance.IsAutoData = false;
  330. $('#isAutoData_checkbox').prop('checked', false);
  331. }
  332. if (data.IsWhere) {
  333. instance.IsWhere = true;
  334. $('#iswhere_checkbox').prop('checked', true);
  335. }
  336. else {
  337. instance.IsWhere = false;
  338. $('#iswhere_checkbox').prop('checked', false);
  339. }
  340. if (data.IsGroupBy) {
  341. instance.IsGroupBy = true;
  342. $('#isGroupBy_checkbox').prop('checked', true);
  343. }
  344. else {
  345. instance.IsGroupBy = false;
  346. $('#isGroupBy_checkbox').prop('checked', false);
  347. }
  348. if (data.EnableInsideWhere) {
  349. instance.EnableInsideWhere = true;
  350. $('#enableInsideWhere_checkbox').prop('checked', true);
  351. }
  352. else {
  353. instance.EnableInsideWhere = false;
  354. $('#enableInsideWhere_checkbox').prop('checked', false);
  355. }
  356. if (data.HasIdentityFilter) {
  357. instance.HasIdentityFilter = true;
  358. $('#hasidentityfilter_checkbox').prop('checked', true);
  359. }
  360. else {
  361. instance.HasIdentityFilter = false;
  362. $('#hasidentityfilter_checkbox').prop('checked', false);
  363. }
  364. if (data.IsInternalDataList) {
  365. instance.IsInternalDataList = true;
  366. $('#internaldatalist_checkbox').prop('checked', true);
  367. }
  368. else {
  369. instance.IsInternalDataList = false;
  370. $('#internaldatalist_checkbox').prop('checked', false);
  371. }
  372. if (data.EnableInsideWhere) {
  373. instance.EnableInsideWhere = true;
  374. $('#enableInsideWhere_checkbox').prop('checked', true);
  375. }
  376. else {
  377. instance.IsInternalDataList = false;
  378. $('#enableInsideWhere_checkbox').prop('checked', false);
  379. }
  380. if (data.IsFlatTable) {
  381. $('#chk_IsFlatTable').prop('checked', true);
  382. }
  383. else {
  384. $('#chk_IsFlatTable').prop('checked', false);
  385. }
  386. if (data.CustomFilters)
  387. instance._customfilters.customFilters = JSON.parse(data.CustomFilters);
  388. let dynamic = JSON.parse(data.DynamicQuery);
  389. let idDynamic = (dynamic && dynamic.DataListColumns && dynamic.DataListColumns.length || dynamic && dynamic.IsStarSelected) && dynamic.DataListDocTypes.length;
  390. if (idDynamic)
  391. instance._queryParser.bindDynamicQuery(dynamic, false);
  392. else if (data.QueryString && !idDynamic) {
  393. let dynamicQuery;
  394. instance._queryParser.subQueryNumber = 0;
  395. data.QueryString = data.QueryString.replaceAll("\t", " ");
  396. data.QueryString = data.QueryString.replaceAll("\n", " ");
  397. while (data.QueryString.indexOf(" ") != -1)
  398. data.QueryString = data.QueryString.replaceAll(" ", " ");
  399. instance._queryParser.subQueryNumber = 0;
  400. }
  401. });
  402. }
  403. }, Platform.Helpers.Size.ExtraLarge);
  404. }
  405. loadRightNav() {
  406. let html = `<div class="card chart-metrics h-20">
  407. <div class="card-header"><span class="h5">Properties</span></div>
  408. <div class="card-body pa-5">
  409. <div class="form-group">
  410. <input type="text" class="form-control Datalistname" placeholder="Datalist Name"></input>
  411. </div>
  412. <div class="form-group">
  413. <select class="form-control DatalistType" placeholder="datalist group">
  414. <option value="0">Select DataListType</option>
  415. <option value="1" selected>Query</option>
  416. <option value="2">Provider</option>
  417. <option value="3">Object</option>Object
  418. <option value="4">Function</option>
  419. <option value="5" class="option_externalapi hidden">External Api</option>
  420. </select>
  421. </div>
  422. <div class="form-group">
  423. <select class="form-control DataSourceType" placeholder="datasource type">
  424. <option value="0" selected>Select DataSourceType</option>
  425. <option value="1">Sql</option>
  426. <option value="2">NoSql</option>
  427. </select>
  428. </div>
  429. <div class="form-group">
  430. <select class="form-control TableType" placeholder="Tabletype">
  431. <option value="0" selected>Select Tabletype</option>
  432. <option value="1">Auto Complete</option>
  433. </select>
  434. </div>
  435. <div class="form-group">
  436. <select class="form-control" id="InstalledApp_AutoComplete_DataList" placeholder="InstalledApp">
  437. <option selected>Select InstalledApp</option>
  438. </select>
  439. <input type="hidden" id="hfAutoComplete_InstalledApp" class="hfAutoCompleteId_InstalledApp' form-control value-control" data-isdynamic="true"/>
  440. </div>
  441. <!------->
  442. <div class="form-group">
  443. <label for="CommonDb_checkbox">
  444. IsCommon
  445. </label>
  446. <div>
  447. <input type="checkbox" class="chk_Iscommon mr-10" onclick="" id="Iscommon_checkbox">IsCommon
  448. </div>
  449. </div>
  450. <!---end--->
  451. <div class="form-group">
  452. <div class="row"><span class="col-sm-6">IsFlatTable</span>
  453. <label class="switch m-t-sm col-sm-6">
  454. <input type="checkbox" class="pull-right hidden" id="chk_IsFlatTable">
  455. <span></span>
  456. </label></div>
  457. </div>
  458. <div class="form-group">
  459. <label for="isAutoData_checkbox">
  460. IsAutoData
  461. </label>
  462. <div>
  463. <input type="checkbox" class="chkIsAutoData mr-10" onclick="" id="isAutoData_checkbox" checked="true">IsAutoData
  464. </div>
  465. </div>
  466. <div class="form-group">
  467. <label for="isWhere_checkbox">
  468. IsWhere
  469. </label>
  470. <div>
  471. <input type="checkbox" class="chkIsWhere mr-10" onclick="" id="iswhere_checkbox" data-tooltip="true" title="Don't check if where clasue is in subquery">IsWhere
  472. </div>
  473. </div>
  474. <div class="form-group">
  475. <label for="isGroupBy_checkbox">
  476. IsGroupBy
  477. </label>
  478. <div>
  479. <input type="checkbox" class="chkisGroupBy mr-10" onclick="" id="isGroupBy_checkbox" data-tooltip="true" title="Check if group by clasue is in subquery">IsGroupBy
  480. </div>
  481. </div>
  482. <div class="form-group">
  483. <label for="enableinsideWhere_checkbox">
  484. Enable Inside WhereClause
  485. </label>
  486. <div>
  487. <input type="checkbox" class="chkenableInsideWhere mr-10" onclick="" id="enableInsideWhere_checkbox">EnableInsideWhere
  488. </div>
  489. </div>
  490. <div class="form-group">
  491. <label for="hasidentityfilter_checkbox">
  492. HasIdentityFilter
  493. </label>
  494. <div>
  495. <input type="checkbox" class="chkHasIdentityFilter mr-10" onclick="" id="hasidentityfilter_checkbox">HasIdentityFilter
  496. </div>
  497. </div>
  498. <div class="form-group">
  499. <label for="isInternalDatalist_checkbox">
  500. IsInternalDataList
  501. </label>
  502. <div>
  503. <input type="checkbox" class="chkInternalDataList mr-10" onclick="" id="internaldatalist_checkbox">IsInternalDataList
  504. </div>
  505. </div>
  506. <div class="form-group">
  507. <input type="text" class="form-control PrimaryKeyColumn" placeholder="PrimaryKey ColumnName">
  508. </div>
  509. <div class="form-group">
  510. <label for="txt_parameters">
  511. Parameters
  512. </label>
  513. <textarea type="text" class="form-control" id="txt_parameters" placeholder="Parameters"> </textarea>
  514. </div>
  515. <div class="form-group" id="selectedcolumns">
  516. <div class="floating-label-form-group-with-value" id="SelectColumnName">
  517. <label for="txt_SelectColumnName">Select Contact Columns</label>
  518. <select id="txt_SelectColumnName" class="txt_SelectColumnName form-control text-control required" data-isdefault="true" multiple="multiple" style="width:100%"></select>
  519. </div>
  520. </div>
  521. <div class="form-group hidden" id="div_SpName">
  522. <input type="text" class="form-control StoredProcedureName" id="txt_spName" placeholder="StoredProcedure Name"></input>
  523. </div>
  524. <div class="form-group hidden" id="div_Scheduler">
  525. <div class="row"><span class="col-sm-6">Scheduler</span>
  526. <label class="switch m-t-sm col-sm-6">
  527. <input type="checkbox" class="pull-right hidden" id="chk_Scheduler">
  528. <span></span>
  529. </label></div>
  530. </div>
  531. <div class="form-group hidden" id="div_TenureValue">
  532. <input type="text" class="form-control TenureValue" id="txt_TenureValue" placeholder="TenureValue"></input>
  533. </div>
  534. <div class="form-group hidden" id="div_TenureType">
  535. <p class="font-14">Tenure Type</p>
  536. <select id="select_TenureType"class="form-control">
  537. <option value="0">--Select Tenure Type--</option>
  538. <option value="1" >Daily</option>
  539. <option value="2">Years</option>
  540. <option value="3" >Months</option>
  541. <option value="4">Days</option>
  542. <option value="5">Hours</option>
  543. <option value="6">Minutes</option>
  544. <option value="7">Seconds</option>
  545. </select>
  546. </div>
  547. <div class="form-group hidden" id="div_StartingDate">
  548. <input type="text" class="form-control StartingDate datepicker-input" id="txt_StartingDate" placeholder="StartingDate"></input>
  549. </div>
  550. </div>
  551. <div class="card-footer"><button class="btn btn-primary btn-wth-icon icon-wthot-bg btn-md" onclick="javascript:Unibase.DataSources.DataLists.DatalistBuilder.Instance().loadDataSourceProviders()"><span class="icon-label"><i class="fa fa-database"></i> </span><span class="btn-text">DataSourcesProviders</span></button></div>
  552. </div>`;
  553. $("#bl-nav-right").html(html);
  554. }
  555. getOptions(doctypeid, doctypename) {
  556. let html = `<div class="card" style="position: initial;height: -webkit-fill-available;"><div class="card-header"> <ul class="nav nav-tabs nav-light">
  557. <li role="tablist" class="Active">
  558. <a data-toggle="tab" href="#columns-container" class="nav-link active show">Columns</a>
  559. <li role="tablist"><a data-toggle="tab" href="#filter-container" class="nav-link">Filter</a></li>
  560. </li></ul>
  561. </div>
  562. <div class="card-body">
  563. <div class="tab-content"> <div id="filter-container" class="tab-pane fade in" style="overflow: hidden auto; z-index: 0; height:450px;"><div class="card filter_docproperties"></div>
  564. </div>
  565. <div id="columns-container" class="tab-pane fade in active show"><ul class="list-group list-group-flush" id="ul_docproperties" style="overflow: hidden auto; z-index: 0; max-height: 450px;"></ul></div></div>
  566. </div>
  567. <div class="card-footer"><button id="btn-doctypeproperty-close" class="btn-doctype-close btn btn-secondary btn-sm mr-auto">Close</button>
  568. <button id="btn-doctypeproperty-save" class="btn-doctype-save btn btn-primary btn-sm pull-right" onclick="javascript:Unibase.DataSources.DataLists.DatalistBuilder.Instance().getSelectedDocProperties(${doctypeid},'${doctypename}')">Apply</button></div>
  569. </div>`;
  570. this.navigationHelper.popupHtml(html, Platform.Helpers.Size.Large, function (propertycontainer) {
  571. $("#btn-doctypeproperty-close").click(function () {
  572. $('#' + propertycontainer).modal('hide');
  573. $('#' + propertycontainer).remove();
  574. });
  575. });
  576. DatalistBuilder.Instance().getDocProperties(doctypeid);
  577. }
  578. getDoctypes(containerid, datasourceid) {
  579. let doctypename = $("#txt-doctypesearch").val();
  580. if (doctypename == "") {
  581. doctypename = null;
  582. }
  583. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('platform/datasources/managers/datalistmanager.js', function () {
  584. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('platform/datasources/components/datalistbuilder/datalistbuilder.template.js', function () {
  585. Unibase.Platform.DataSources.Managers.DocTypeManager.Instance().getDoctypeByName(doctypename).then(function (response) {
  586. let html = "";
  587. let data = JSON.parse(response.toString());
  588. for (let i = 0; i < data.length; i++) {
  589. var doctype = data[i];
  590. var template = DataSources.Templates.DatalistBuilder.Instance().loadDocTypeTemplate();
  591. var templateScript = Handlebars.compile(template);
  592. var context = { "DocTypeId": doctype.DocTypeId, "DocTypeName": doctype.DocTypeName, "DocTypeTableName": doctype.DocTypeTableName };
  593. html += templateScript(context);
  594. }
  595. $("#ul_doctypeList").html(html);
  596. });
  597. });
  598. });
  599. }
  600. getdragelementTemplate(doctypeid, doctypename, doctablename) {
  601. let aliasname;
  602. let index = doctypelist.findIndex(x => x.DocTypeName === doctypename);
  603. if (index > -1) {
  604. doctypename = doctypename + "_" + (index + 1);
  605. aliasname = doctablename + "_" + (index + 1);
  606. }
  607. var selecteddoctype = {
  608. DocTypeId: Number(doctypeid),
  609. DocTypeName: doctypename,
  610. DocTableName: doctablename,
  611. AliasName: aliasname
  612. };
  613. let tablename = doctablename;
  614. SelectedTables.push(tablename);
  615. doctypelist.push(selecteddoctype);
  616. let draghtml = `<div class='blockyleft btn ml-10'><i class="fa fa-database"></i>
  617. <input type="hidden" name="blockelemtypeid" class="blockelemtypeId" value="{{DocTypeId}}">
  618. <p class="blockyname h4" id=${doctypeid}>${doctypename}</p>
  619. </div>
  620. <div class="blockyright"><span class="badge badge-secondary badge-pill" id="columns_count_${doctypeid}">0</span></div>
  621. <div class='blockydiv'></div>
  622. <div class='blockyinfo'>${doctypename}<div class="pull-right btn-group border-0 btn-group-xs my-auto mr-10">
  623. <button class="btn btn-outline-light" type="button" onclick="javascript:Unibase.DataSources.DataLists.DatalistBuilder.Instance().loadJoins(${doctypeid},'${doctypename}','${doctablename}')"><i class="fa fa-link"></i></button>
  624. <button class="btn btn-outline-light" type="button" onclick="javascript:Unibase.DataSources.DataLists.DatalistBuilder.Instance().getOptions(${doctypeid},'${doctypename}')"><i class="fa fa-list"></i></button>
  625. </div></div>`;
  626. return draghtml;
  627. }
  628. selectAllDocProperties() {
  629. if ($('input.chk_DocPropertyId_All').is(':checked')) {
  630. $(".chk_DocPropertyId").prop("checked", true);
  631. }
  632. else {
  633. $(".chk_DocPropertyId").prop("checked", false);
  634. }
  635. }
  636. getDocProperties(doctypeid) {
  637. this.fileCacheHelper.loadJsFile("platform/datasources/managers/datalistmanager.js", function () {
  638. this.fileCacheHelper.loadJsFile("platform/datasources/components/datalistbuilder/datalistbuilder.template.js", function () {
  639. DataSources.Managers.DocTypeManager.Instance().getDocProperties(doctypeid).then(function (response) {
  640. let html = `<div id="div_docproperty_all" class="text-right mb-10 mr-10"><input type="checkbox" class="chk_DocPropertyId_All" id="chk_DocPropertyId_All" value = "" onchange="Unibase.DataSources.DataLists.DatalistBuilder.Instance().selectAllDocProperties()"> <span id="spn_allDocproperties" class="text-right"> Select All</span></div>`;
  641. var data = JSON.parse(response.toString());
  642. for (let i = 0; i < data.length; i++) {
  643. var docproperties = data[i];
  644. var template = DataSources.Templates.DatalistBuilder.Instance().loadDocPropertyTemplate();
  645. var templateScript = Handlebars.compile(template);
  646. var context = { "DocPropertyId": docproperties.DocPropertyId, "DocPropertyName": docproperties.DocPropertyName, "PropTableName": docproperties.PropTableName };
  647. html += templateScript(context);
  648. html += `</optgroup>`;
  649. }
  650. jQuery("#ul_docproperties").html(html);
  651. DatalistBuilder.Instance().loadQueryBuilderDiv(response);
  652. DatalistBuilder.Instance().editColumns();
  653. });
  654. });
  655. });
  656. }
  657. columnsCount(doctypeid) {
  658. var length = SelectedDocProperties.length;
  659. let count = 0;
  660. for (let i = 0; i < length; i++) {
  661. if (SelectedDocProperties[i].DocTypeId == doctypeid) {
  662. count = count + 1;
  663. }
  664. }
  665. $("#columns_count_" + doctypeid).text(count);
  666. }
  667. editColumns() {
  668. if (SelectedDocProperties != null) {
  669. for (let i = 0; i < SelectedDocProperties.length; i++) {
  670. $("#chk_DocPropertyId_" + SelectedDocProperties[i].DocPropertyId).prop("checked", "true");
  671. }
  672. }
  673. }
  674. getSelectedDocProperties(doctypeid, doctypename) {
  675. SelectedDoctypes.push(doctypeid);
  676. let tablename = $("#doc_tablename").val();
  677. $('.li_docproperty').each(function () {
  678. if ($(this).find('input:checkbox').prop("checked") == true) {
  679. let id = $(this).find('input:checkbox').val();
  680. let index = SelectedDocProperties.findIndex(x => x.DocPropertyId === Number(id));
  681. if (index < 0) {
  682. let propertyname = $(this).find("#spn_DocpropertyName").text();
  683. var docprop = {
  684. DocPropertyId: Number(id),
  685. DocPropertyName: propertyname,
  686. DocTypeTableName: tablename.toString(),
  687. DocTypeId: doctypeid
  688. };
  689. SelectedDocProperties.push(docprop);
  690. }
  691. }
  692. });
  693. DatalistBuilder.Instance().columnsCount(doctypeid);
  694. }
  695. removeDocProperty(id) {
  696. if (SelectedDocProperties.length != 0) {
  697. var index = SelectedDocProperties.findIndex(x => x.DocPropertyId === id);
  698. SelectedDocProperties.splice(index, 1);
  699. }
  700. }
  701. loadJoins(doctypeid, doctypename, doctablename) {
  702. let html = `<div class="card">
  703. <div class="card-header"><h5>Joins</h5>
  704. </div>
  705. <div class="card-body">
  706. <div class="" style="overflow: hidden auto; z-index: 0; height:450px;"><div id="joins-container" class="container"><div class="joins_docproperties"><ul class="list-group col-sm-12" id="ul_joins"><li class="list-group-item li_join hidden" id="li_join"></li></ul></div>
  707. <div class="joins_table_Container mt-20">
  708. <div class= "card hidden" id="card_joins_table">
  709. <div class="card-header"><p class="">Selected Joins</p></div>
  710. <div class="card-body">
  711. <table id="joins_table" class="table table-bordered"><thead>
  712. <th>LeftDocType</th><th>LeftDocTypeColumn</th><th>RightDocType</th><th>RightDocTypeColumn</th><th>JoinType</th><th> </th>
  713. </thead><tbody class="joins_table_body"></tbody></table></div>
  714. </div>
  715. </div></div>
  716. </div></div>
  717. <div class="card-footer"><button id="btn-joins-close" class="btn-joins-close btn btn-secondary btn-sm mr-auto">Close</button>
  718. <button id="btn-joins-save" class="btn-join-save btn btn-primary btn-sm pull-right" onclick="javascript:Unibase.DataSources.DataLists.DatalistBuilder.Instance().GetSelectedJoins(${doctypeid},'${doctypename}')">Apply</button></div>
  719. </div>`;
  720. this.navigationHelper.popupHtml(html, Platform.Helpers.Size.Large, function (joincontainer) {
  721. $("#btn-joins-close").click(function () {
  722. $('#' + joincontainer).modal('hide');
  723. $('#' + joincontainer).remove();
  724. });
  725. });
  726. DatalistBuilder.Instance().loadJoinsProperties(doctypeid, doctypename, doctablename, 1);
  727. }
  728. addJoin(doctypeid, doctypename, doctablename, len) {
  729. len = len + 1;
  730. let html;
  731. let i = 1;
  732. let leftdocpropId = $('#li_join_' + i).find("#select_docproperties_" + doctypeid + "_" + i + " option:selected").val();
  733. let leftdocpropName = $('#li_join_' + i).find("#select_docproperties_" + doctypeid + "_" + i + " option:selected").text();
  734. let rightdocpropId = $('#li_join_' + i).find("#select_docproperty_" + i + " option:selected").val();
  735. let rightdocpropName = $('#li_join_' + i).find("#select_docproperty_" + i + " option:selected").text();
  736. let joinId = $('#li_join_' + i).find("#select_joins_" + i + " option:selected").val();
  737. let joinName = $('#li_join_' + i).find("#select_joins_" + i + " option:selected").text();
  738. let leftdoctypeid = $('#li_join_' + i).find("#leftdoctypeid_" + i).val();
  739. let leftdoctypename = $('#li_join_' + i).find("#leftdoctypename_" + i).text();
  740. let rightdoctypeid = $("#li_join_" + i).find("#hf_rightDoctype_" + i).val();
  741. let rightdoctypename = $("#li_join_" + i).find("#hf_rightDoctypeName_" + i).val();
  742. let rightdoctablename = $("#li_join_" + i).find("#hf_rightDocTableName_" + i).val();
  743. var template = DataSources.Templates.DatalistBuilder.Instance().addJoinTemplate();
  744. var templateScript = Handlebars.compile(template);
  745. var context = {
  746. "LeftDocTypeId": doctypeid,
  747. "LeftDocTypeName": doctypename,
  748. "LeftDocTableName": doctablename,
  749. "LeftDocPropertyId": leftdocpropId,
  750. "LeftDocPropertyName": leftdocpropName,
  751. "RightDocTypeId": rightdoctypeid,
  752. "RightDocTableName": rightdoctablename,
  753. "RightDocTypeName": rightdoctypename,
  754. "RightDocPropertyId": rightdocpropId,
  755. "RightDocPropertyName": rightdocpropName,
  756. "JoinId": joinId,
  757. "JoinName": joinName
  758. };
  759. html = templateScript(context);
  760. $("#card_joins_table").removeClass("hidden");
  761. $(".joins_table_body").append(html);
  762. $(".btn_joindelete").click(function (e) {
  763. let leftid = $(this).closest('tr').find('#leftdocpropid').val();
  764. let rightid = $(this).closest('tr').find('#rightdocpropid').val();
  765. if (SelectedJoins.length != 0) {
  766. let leftindex = SelectedJoins.findIndex(x => x.LeftDocPropertyId === Number(leftid));
  767. let rightindex = SelectedJoins.findIndex(x => x.RightDocPropertyId === Number(rightid));
  768. if (leftindex != -1 && rightindex != -1) {
  769. if (leftindex == rightindex) {
  770. SelectedJoins.splice(leftindex, 1);
  771. $(this).closest("tr").remove();
  772. }
  773. }
  774. }
  775. });
  776. }
  777. loadJoinsProperties(doctypeid, doctypename, doctablename, len) {
  778. let html = "";
  779. var template = DataSources.Templates.DatalistBuilder.Instance().loadJoinDoctypesTemplate(doctypeid, doctypename, doctablename, 1);
  780. var templateScript = Handlebars.compile(template);
  781. var context = { "DoctypeId": doctypeid, "DoctypeName": doctypename };
  782. html += templateScript(context);
  783. $(".li_join:last").after(html);
  784. DatalistBuilder.Instance().getDocpropertiesForJoins(doctypeid, len);
  785. DatalistBuilder.Instance().loadDocTypesDropdown(len);
  786. }
  787. loadDocTypesDropdown(len) {
  788. let html = "<option value='0'>Select</option>";
  789. for (let i = 0; i < doctypelist.length; i++) {
  790. var result = doctypelist[i];
  791. var template = DataSources.Templates.DatalistBuilder.Instance().loadDoctypesDropdownTemplate();
  792. var templateScript = Handlebars.compile(template);
  793. var context = { "DocTypeId": result.DocTypeId, "DocTypeName": result.DocTypeName, "DocTableName": result.DocTableName };
  794. html += templateScript(context);
  795. }
  796. jQuery("#select_doctypes_" + len).append(html);
  797. DatalistBuilder.Instance().editJoins();
  798. }
  799. editJoins() {
  800. if (SelectedJoins.length > 0) {
  801. $("#card_joins_table").removeClass("hidden");
  802. for (let i = 0; i < SelectedJoins.length; i++) {
  803. let html;
  804. let leftdocpropId = SelectedJoins[i].LeftDocPropertyId;
  805. let leftdocpropName = SelectedJoins[i].LeftDocPropertyName;
  806. let rightdocpropId = SelectedJoins[i].RightDocPropertyId;
  807. let rightdocpropName = SelectedJoins[i].RightDocPropertyName;
  808. let joinId = SelectedJoins[i].JoinTypeId;
  809. let joinName = SelectedJoins[i].JoinName;
  810. let leftdoctypeid = SelectedJoins[i].LeftDocTypeId;
  811. let leftdoctypename = SelectedJoins[i].LeftDocTypeName;
  812. let rightdoctypeid = SelectedJoins[i].RightDocTypeId;
  813. let rightdoctypename = SelectedJoins[i].RightDocTypeName;
  814. let rightdoctablename = SelectedJoins[i].RightDocTableName;
  815. let leftdoctablename = SelectedJoins[i].LeftDocTableName;
  816. var template = DataSources.Templates.DatalistBuilder.Instance().addJoinTemplate();
  817. var templateScript = Handlebars.compile(template);
  818. var context = {
  819. "LeftDocTypeId": leftdoctypeid,
  820. "LeftDocTypeName": leftdoctypename,
  821. "LeftDocTableName": leftdoctablename,
  822. "LeftDocPropertyId": leftdocpropId,
  823. "LeftDocPropertyName": leftdocpropName,
  824. "RightDocTypeId": rightdoctypeid,
  825. "RightDocTableName": rightdoctablename,
  826. "RightDocTypeName": rightdoctypename,
  827. "RightDocPropertyId": rightdocpropId,
  828. "RightDocPropertyName": rightdocpropName,
  829. "JoinId": joinId,
  830. "JoinName": joinName
  831. };
  832. html = templateScript(context);
  833. $(".joins_table_body").append(html);
  834. }
  835. }
  836. }
  837. getDocPropertiesByDoctypeId(len) {
  838. let doctypeid = $("#select_doctypes_" + len + " option:selected").val();
  839. let doctypename = $("#select_doctypes_" + len + " option:selected").text();
  840. let doctablename = $("#select_doctypes_" + len + " option:selected").attr("data-table");
  841. jQuery("#hf_rightDoctype_" + len).val(doctypeid);
  842. jQuery("#hf_rightDoctypeName_" + len).val(doctypename);
  843. jQuery("#hf_rightDocTableName_" + len).val(doctablename);
  844. DataSources.Managers.DocTypeManager.Instance().getDocProperties(doctypeid).then(function (response) {
  845. let html = "";
  846. var data = JSON.parse(response.toString());
  847. for (let i = 0; i < data.length; i++) {
  848. var docproperties = data[i];
  849. var template = DataSources.Templates.DatalistBuilder.Instance().loadJoinDocPropertiesTemplate();
  850. var templateScript = Handlebars.compile(template);
  851. var context = { "DocPropertyId": docproperties.DocPropertyId, "DocPropertyName": docproperties.DocPropertyName, "PropTableName": docproperties.PropTableName };
  852. html += templateScript(context);
  853. }
  854. jQuery("#select_docproperty_" + len).append(html);
  855. });
  856. jQuery("#selected_doctype_" + len).html("<strong>" + doctypename + "</strong>");
  857. jQuery("#doctypeproperty_" + len).removeClass("hidden");
  858. }
  859. getDocpropertiesForJoins(doctypeid, len) {
  860. DataSources.Managers.DocTypeManager.Instance().getDocProperties(doctypeid).then(function (response) {
  861. let html = "";
  862. var data = response.result;
  863. for (let i = 0; i < data.length; i++) {
  864. var docproperties = data[i];
  865. var template = DataSources.Templates.DatalistBuilder.Instance().loadJoinDocPropertiesTemplate();
  866. var templateScript = Handlebars.compile(template);
  867. var context = { "DocPropertyId": docproperties.DocPropertyId, "DocPropertyName": docproperties.DocPropertyName, "PropTableName": docproperties.PropTableName };
  868. html = templateScript(context);
  869. $("#select_docproperties_" + doctypeid + "_" + len).append(html);
  870. }
  871. });
  872. }
  873. GetSelectedJoins(doctypeid, doctypename, doctablename) {
  874. SelectedJoins = [];
  875. var joins = {
  876. LeftDocPropertyId: 0,
  877. LeftDocPropertyName: "",
  878. LeftDocTypeId: 0,
  879. LeftDocTypeName: "",
  880. LeftDocTableName: "",
  881. RightDocPropertyId: 0,
  882. RightDocPropertyName: "",
  883. RightDocTypeId: 0,
  884. RightDocTypeName: "",
  885. RightDocTableName: "",
  886. JoinTypeId: 0,
  887. JoinName: ""
  888. };
  889. $("#joins_table .join-rows").each(function () {
  890. let leftdoctypeid = $(this).find("#leftdoctypeid").val();
  891. let leftdocpropId = $(this).find("#leftdocpropid").val();
  892. let leftdocpropname = $(this).find("#td_leftdocpropname").text();
  893. let leftdocName = $(this).find("#td_leftdoctypename").text();
  894. let lefttdoctablename = $(this).find("#leftdoctypeid").attr("data-table");
  895. let rightdocpropId = $(this).find("#rightdocpropid").val();
  896. let rightdocName = $(this).find("#td_rightdoctypename").text();
  897. let joinId = $(this).find("#doctype_joinid").val();
  898. let joinName = $(this).find("#td_jointype").text();
  899. let rightdoctypeid = $(this).find("#rightdoctypeid").val();
  900. let rightdoctypename = $(this).find("#td_rightdoctypename").text();
  901. let rightdoctablename = $(this).find("#rightdoctypeid").attr("data-table");
  902. let rightdocpropname = $(this).find("#td_rightdocpropname").text();
  903. joins = {
  904. LeftDocPropertyId: Number(leftdocpropId),
  905. LeftDocPropertyName: leftdocpropname,
  906. RightDocPropertyId: Number(rightdocpropId),
  907. RightDocPropertyName: rightdocpropname,
  908. JoinTypeId: Number(joinId),
  909. JoinName: joinName,
  910. LeftDocTypeId: Number(leftdoctypeid),
  911. LeftDocTypeName: leftdocName,
  912. LeftDocTableName: lefttdoctablename,
  913. RightDocTypeId: Number(rightdoctypeid),
  914. RightDocTypeName: rightdoctypename,
  915. RightDocTableName: rightdoctablename
  916. };
  917. SelectedJoins.push(joins);
  918. });
  919. }
  920. getConditions() {
  921. let qelem;
  922. qelem = $('#builder');
  923. $("#Conditiontable_Container").empty();
  924. var ruleslen = (qelem.queryBuilder('getRules')).rules.length;
  925. var Conditiongroups = {
  926. GroupId: 0,
  927. LogicalOperatorType: "",
  928. Conditions: SelectedConditions
  929. };
  930. var conditions = {
  931. DocPropertyId: 0,
  932. ConditionValue: "",
  933. ConditionType: "",
  934. RelationalOperatorType: "",
  935. ConditionGroupId: 0,
  936. };
  937. let conditiongroup = 1;
  938. for (let i = 0; i < ruleslen; i++) {
  939. if ((qelem.queryBuilder('getRules')).rules[i].rules != null) {
  940. var grouplength = (qelem.queryBuilder('getRules')).rules[i].rules.length;
  941. conditiongroup = conditiongroup + 1;
  942. for (var j = 0; j < grouplength; j++) {
  943. conditions = {
  944. DocPropertyId: (qelem.queryBuilder('getRules')).rules[i].rules[j].id,
  945. ConditionValue: (qelem.queryBuilder('getRules')).rules[i].rules[j].value,
  946. ConditionType: (qelem.queryBuilder('getRules')).rules[i].condition,
  947. RelationalOperatorType: (qelem.queryBuilder('getRules')).rules[i].rules[j].operator,
  948. ConditionGroupId: conditiongroup
  949. };
  950. SelectedConditions.push(conditions);
  951. }
  952. Conditiongroups = {
  953. GroupId: conditiongroup,
  954. LogicalOperatorType: (qelem.queryBuilder('getRules')).rules[i].condition,
  955. Conditions: SelectedConditions
  956. };
  957. SelectedGroups.push(Conditiongroups);
  958. SelectedConditions = [];
  959. }
  960. else {
  961. conditions = {
  962. DocPropertyId: (qelem.queryBuilder('getRules')).rules[i].id,
  963. ConditionValue: (qelem.queryBuilder('getRules')).rules[i].value,
  964. ConditionType: (qelem.queryBuilder('getRules')).condition,
  965. RelationalOperatorType: (qelem.queryBuilder('getRules')).rules[i].operator,
  966. ConditionGroupId: conditiongroup
  967. };
  968. SelectedConditions.push(conditions);
  969. Conditiongroups = {
  970. GroupId: conditiongroup,
  971. LogicalOperatorType: (qelem.queryBuilder('getRules')).condition,
  972. Conditions: SelectedConditions
  973. };
  974. SelectedGroups.push(Conditiongroups);
  975. SelectedConditions = [];
  976. }
  977. }
  978. }
  979. loadQueryBuilderDiv(response) {
  980. $("#filter-container").html(`<div id="builder"></div> <button class="btn btn-primary parse-json mt-20" id="btn_ApplyConditions">Apply</button> <div id="result" class="mt-20"> <pre></pre> <div id="Output"></div><div id="Conditiontable_Container" style="overflow-x:auto;"></div> </div>`);
  981. this.fileCacheHelper.loadJsFile("libs/querybuilder/query-builder.standalone.js", function () {
  982. let qelem;
  983. qelem = $('#builder');
  984. let filtersArray = [];
  985. for (var i = 0; i < response.length; i++) {
  986. let element = response[i];
  987. filtersArray.push({
  988. id: element.docPropertyId,
  989. label: element.docPropertyName,
  990. type: 'string',
  991. size: 30,
  992. unique: true,
  993. optgroup: element.docTypeName
  994. });
  995. }
  996. if (filtersArray.length == 0) {
  997. filtersArray = [
  998. {
  999. id: 'id',
  1000. label: 'label',
  1001. table: 'table',
  1002. type: 'string',
  1003. size: 30,
  1004. unique: true,
  1005. },
  1006. ];
  1007. }
  1008. var options = {
  1009. allow_empty: true,
  1010. filters: filtersArray
  1011. };
  1012. qelem.queryBuilder(options);
  1013. $('.parse-json').on('click', function () {
  1014. console.log(JSON.stringify(qelem.queryBuilder('getRules'), undefined, 2));
  1015. });
  1016. $("#builder_group_0").addClass("col-sm-12 mt-20");
  1017. });
  1018. $("#btn_ApplyConditions").click(function () {
  1019. DatalistBuilder.Instance().getConditions();
  1020. });
  1021. }
  1022. loadDataSourceProviders() {
  1023. let html = DataSources.Templates.DatalistBuilder.Instance().loadDataSourceProviders();
  1024. this.navigationHelper.popupHtml(html, Platform.Helpers.Size.Auto, function (Datasourcecontainer) {
  1025. $("#btn-data-source-close").click(function () {
  1026. $('#' + Datasourcecontainer).modal('hide');
  1027. $('#' + Datasourcecontainer).remove();
  1028. });
  1029. });
  1030. DatalistBuilder.Instance().getDataSourceProviders();
  1031. }
  1032. getDataSourceProviders() {
  1033. this.fileCacheHelper.loadJsFile("platform/datasources/managers/datalistmanager.js", function () {
  1034. this.fileCacheHelper.loadJsFile("platform/datasources/components/datalistbuilder/datalistbuilder.template.js", function () {
  1035. DataSources.Managers.DataListManager.Instance().getDataSourceProviders().then(function (response) {
  1036. var data = JSON.parse(response.toString());
  1037. let html = "";
  1038. for (let i = 0; i < data.length; i++) {
  1039. let datasourceprovidername = data[i].DataSourceProviderName;
  1040. let datasourceproviderid = data[i].DataSourceProviderId;
  1041. var template = DataSources.Templates.DatalistBuilder.Instance().loadDataSourceProvidersTemplate();
  1042. var templateScript = Handlebars.compile(template);
  1043. var context = { "DataSourceProviderId": datasourceproviderid, "DataSourceProviderName": datasourceprovidername };
  1044. html += templateScript(context);
  1045. }
  1046. jQuery("#div_datasourceproviders").html(html);
  1047. });
  1048. });
  1049. });
  1050. }
  1051. bindDataSourceProviderDropdown() {
  1052. DataSources.Managers.DataListManager.Instance().getDataSourceProviders().then(function (response) {
  1053. let html = "";
  1054. var data = JSON.parse(response.toString());
  1055. for (let i = 0; i < data.length; i++) {
  1056. var datasourceproviders = data[i];
  1057. var template = DataSources.Templates.DatalistBuilder.Instance().loadDataSourceProviderDropdownTemplate();
  1058. var templateScript = Handlebars.compile(template);
  1059. var context = { "DataSourceProviderId": datasourceproviders.DataSourceProviderId, "DataSourceProviderName": datasourceproviders.DataSourceProviderName };
  1060. html += templateScript(context);
  1061. }
  1062. $("#select_datasourceproviders").append(html);
  1063. });
  1064. }
  1065. getDataSources(dataSourceProviderId, dataSourceProviderName) {
  1066. let html = `<div class="card" style="position: initial;height:-webkit-fill-available;"><div class="card-header"><span class="pull-right"><a href="javascript:;" onclick="Unibase.DataSources.DataLists.DatalistBuilder.Instance().loadSettings(${dataSourceProviderId},'${dataSourceProviderName}')" title="DatasourceProviderSettings" class="mr-15"><i class="fa fa-cog"></i></a><a href="javascript:;"onclick="Unibase.DataSources.DataLists.DatalistBuilder.Instance().addDataSource(${dataSourceProviderId})" title="Add DataSource"><i class="fa fa-plus"></i></a></span><p class="h5">Data Sources (${dataSourceProviderName})</p> </div>
  1067. <div class="card-body row h-800" id="div_datasources_${dataSourceProviderId}">
  1068. </div>
  1069. <div class="card-footer"><button id="btn-source-close" class="btn-source-close btn btn-secondary btn-sm mr-auto">Close</button></div>
  1070. </div>`;
  1071. this.navigationHelper.popupHtml(html, Platform.Helpers.Size.Auto, function (Datasourcecontainer) {
  1072. $("#btn-source-close").click(function () {
  1073. $('#' + Datasourcecontainer).modal('hide');
  1074. $('#' + Datasourcecontainer).remove();
  1075. });
  1076. });
  1077. DatalistBuilder.Instance().bindDataSources(dataSourceProviderId);
  1078. }
  1079. bindDataSources(dataSourceProviderId) {
  1080. this.fileCacheHelper.loadJsFile("platform/datasources/managers/datalistmanager.js", function () {
  1081. this.fileCacheHelper.loadJsFile("platform/datasources/components/datalistbuilder/datalistbuilder.template.js", function () {
  1082. this._datalistManager.getDataSources(dataSourceProviderId).then(function (response) {
  1083. let html = "";
  1084. var data = JSON.parse(response.toString());
  1085. for (let i = 0; i < data.length; i++) {
  1086. var datasources = data[i];
  1087. var template = DataSources.Templates.DatalistBuilder.Instance().loadDataSourceTemplate();
  1088. var templateScript = Handlebars.compile(template);
  1089. var context = { "DataSourceId": datasources.DataSourceId, "DataSourceName": datasources.DataSourceName, "DataSourceProviderId": datasources.DataSourceProviderId };
  1090. html += templateScript(context);
  1091. }
  1092. jQuery("#div_datasources_" + dataSourceProviderId).html(html);
  1093. });
  1094. });
  1095. });
  1096. }
  1097. addDataSource(dataSourceproviderid) {
  1098. let html = DataSources.Templates.DatalistBuilder.Instance().loadAddDataSourceTemplate(dataSourceproviderid);
  1099. this.navigationHelper.popupHtml(html, Platform.Helpers.Size.Auto, function (Datasourcecontainer) {
  1100. $("#btn-addsource-close").click(function () {
  1101. $('#' + Datasourcecontainer).modal('hide');
  1102. $('#' + Datasourcecontainer).remove();
  1103. });
  1104. });
  1105. DatalistBuilder.Instance().bindDataSourceProviderDropdown();
  1106. }
  1107. saveDataSource(datasourceproviderid) {
  1108. var postdata = {
  1109. UserId: $("#div_addDataSource_" + datasourceproviderid).find("#datasource_UserId").val().toString(),
  1110. Password: $("#div_addDataSource_" + datasourceproviderid).find("#datasource_Password").val().toString(),
  1111. DataSourceId: Number($("#div_addDataSource_" + datasourceproviderid).find("#datasource_DataSourceId").val()),
  1112. DataSourceName: $("#div_addDataSource_" + datasourceproviderid).find("#datasource_DataSourceName").val().toString(),
  1113. UserDeviceId: $("#div_addDataSource_" + datasourceproviderid).find("#datasource_UserDeviceId").val().toString(),
  1114. DataSourceProviderId: Number($("#div_addDataSource_" + datasourceproviderid).find("#select_datasourceproviders option:selected").val()),
  1115. };
  1116. this.fileCacheHelper.loadJsFile("platform/datasources/managers/datalistmanager.js", function () {
  1117. DataSources.Managers.DataListManager.Instance().saveDataSource(postdata).then(function (response) {
  1118. if (response != null) {
  1119. return response;
  1120. }
  1121. });
  1122. });
  1123. }
  1124. editDataSource(datasourceid, datasourceproviderid) {
  1125. DatalistBuilder.Instance().addDataSource(datasourceproviderid);
  1126. $("#addDataSource_title").text("Edit DataSource");
  1127. DataSources.Managers.DataListManager.Instance().getDataSource(datasourceid).then(function (response) {
  1128. var dataSource = response.result;
  1129. $("#div_addDataSource_" + datasourceproviderid).find("#datasource_DataSourceId").val(dataSource.dataSourceId);
  1130. $("#div_addDataSource_" + datasourceproviderid).find("#datasource_UserId").val(dataSource.userId);
  1131. $("#div_addDataSource_" + datasourceproviderid).find("#datasource_Password").val(dataSource.password);
  1132. $("#div_addDataSource_" + datasourceproviderid).find("#datasource_DataSourceName").val(dataSource.dataSourceName);
  1133. $("#div_addDataSource_" + datasourceproviderid).find("#datasource_UserDeviceId").val(dataSource.userDeviceId);
  1134. $("#div_addDataSource_" + datasourceproviderid).find("#select_datasourceproviders").val(dataSource.dataSourceProviderId);
  1135. });
  1136. }
  1137. loadSettings(dataSourceproviderId, dataSourceproviderName) {
  1138. let html = `<div class="card" style="position: initial;height:-webkit-fill-available;"><div class="card-header"><p class="h5">Settings (${dataSourceproviderName})</p></div>
  1139. <div class="card-body row" id="div_dataSourceprovidersettings_${dataSourceproviderId}">
  1140. <div class="form-group col-md-4"><label>SettingName</label><input type="hidden" class="form-control datasourceprovider_SettingId"/ value="0"><input type="text" class="form-control datasourceprovider_SettingName"/></div>
  1141. <div class="form-group col-md-4"><label>Value</label><input type="text" class="form-control datasourceprovider_SettingValue"/></div>
  1142. <div class="form-group col-md-4"><label>DataSourceProvider</label><select class="form-control datasource_DataSourceProviderId"></select></div>
  1143. </div>
  1144. <div class="card-footer"><button id="btn-settings-close" class="btn-settings-close btn btn-secondary btn-sm mr-auto">Close</button><button id="btn-settings-save" class="btn-settings-save btn btn-primary btn-sm" onclick="Unibase.DataSources.DataLists.DatalistBuilder.Instance().saveDataSourceSetting()">Save</button></div>
  1145. </div>`;
  1146. this.navigationHelper.popupHtml(html, Platform.Helpers.Size.Auto, function (Datasourcecontainer) {
  1147. $("#btn-settings-close").click(function () {
  1148. $('#' + Datasourcecontainer).modal('hide');
  1149. $('#' + Datasourcecontainer).remove();
  1150. });
  1151. });
  1152. this.bindDataSourceProviderDropdownInSettings();
  1153. }
  1154. saveDataSourceSetting() {
  1155. var postdata = {
  1156. SettingId: Number($(".datasourceprovider_SettingId").val()),
  1157. SettingName: $(".datasourceprovider_SettingName").val().toString(),
  1158. SettingValue: Number($(".datasourceprovider_SettingValue").val().toString()),
  1159. DataSourceProviderId: Number($(".datasource_DataSourceProviderId option:selected").val()),
  1160. };
  1161. this.fileCacheHelper.loadJsFile("platform/datasources/managers/datalistmanager.js", function () {
  1162. DataSources.Managers.DataListManager.Instance().saveDataSourceSetting(postdata).then(function (response) {
  1163. if (response != null) {
  1164. return response;
  1165. }
  1166. });
  1167. });
  1168. }
  1169. bindDataSourceProviderDropdownInSettings() {
  1170. this._datalistManager.getDataSourceProviders().then(function (response) {
  1171. let html = "";
  1172. var data = JSON.parse(response.toString());
  1173. for (let i = 0; i < data.length; i++) {
  1174. var datasourceproviders = data[i];
  1175. var template = DataSources.Templates.DatalistBuilder.Instance().loadDataSourceProviderDropdownTemplate();
  1176. var templateScript = Handlebars.compile(template);
  1177. var context = { "DataSourceProviderId": datasourceproviders.DataSourceProviderId, "DataSourceProviderName": datasourceproviders.DataSourceProviderName };
  1178. html += templateScript(context);
  1179. }
  1180. $(".datasource_DataSourceProviderId").append(html);
  1181. });
  1182. }
  1183. buildQuery(containerid) {
  1184. $("#" + containerid).find(".tab-content").addClass("hidden");
  1185. $("#" + containerid).find(".table-container").addClass("hidden");
  1186. $("#" + containerid).find("#datalist-table").remove();
  1187. var buildData = {
  1188. DocProperties: SelectedDocProperties,
  1189. DocTypeIds: SelectedDoctypes,
  1190. DocTables: doctypelist,
  1191. ConditionGroups: SelectedGroups,
  1192. DataListJoins: SelectedJoins,
  1193. QueryString: null,
  1194. datalistid: this.DataListId
  1195. };
  1196. this.fileCacheHelper.loadJsFile("platform/datasources/managers/datalistmanager.js", function () {
  1197. this._dataListManager.buildQuery(buildData).then(function (response) {
  1198. let data = JSON.parse(response.result);
  1199. if (response != null) {
  1200. $("." + containerid + "-table-canvas").addClass("hidden");
  1201. $("#" + containerid).find("#table-container").find("#datalist-table").remove();
  1202. let html;
  1203. if (data.QueryData.error == null) {
  1204. html = `<table id="datalist-table"><thead><tr>`;
  1205. for (let i = 0; i < data.QueryData.columns.length - 1; i++) {
  1206. html += `<th>` + data.QueryData.columns[i].toString() + `</th>`;
  1207. }
  1208. ;
  1209. html += `</thead><tbody>`;
  1210. for (let i = 0; i < data.QueryData.rows.length - 1; i++) {
  1211. let temp = data.QueryData.rows[i];
  1212. html += `<tr>`;
  1213. for (let j = 0; j < temp.length - 1; j++) {
  1214. html += `<td>` + temp[j].toString() + `</td>`;
  1215. }
  1216. html += `</tr>`;
  1217. }
  1218. ;
  1219. html += `</tbody></table>`;
  1220. $("#" + containerid).find(".datalist-builder-body").append(html);
  1221. var table1 = new Tabulator("#datalist-table", {});
  1222. var width = $("#" + containerid).find(".datalist-builder-body").height() - 49 + "px";
  1223. console.log(width);
  1224. table1.setHeight(width);
  1225. }
  1226. else {
  1227. html = `<span id="span_error">` + data.QueryData.error + `</span>`;
  1228. $("#" + containerid).find(".datalist-builder-body").append(html);
  1229. }
  1230. }
  1231. });
  1232. });
  1233. }
  1234. saveDataList(containerid) {
  1235. var instance = this;
  1236. let QueryTypeId = 2;
  1237. let isflattable = 0;
  1238. let scheduler = 0;
  1239. this._queryParser.ErrorThrown = false;
  1240. let datalistname = $("#" + containerid).find(".Datalistname").val();
  1241. $('.datalist-builder-body').add('.chart-metrics').click(function () {
  1242. $("#Bizgaze-messageInfo").fadeOut(2000, "swing");
  1243. });
  1244. let DataListTypeId = Number($("#" + containerid).find(".DatalistType").val());
  1245. let DataSourceId = Number($("#" + containerid).find(".DataSourceType").val());
  1246. if (datalistname == '') {
  1247. return MessageHelper.Instance().showError("Please provide DatalistName", 'bl-datalist_error');
  1248. }
  1249. if (DataListTypeId == 0) {
  1250. return MessageHelper.Instance().showError("Please select DataListType", 'bl-datalist_error');
  1251. }
  1252. if (DataSourceId == 0) {
  1253. return MessageHelper.Instance().showError("Please select DataSourceType", 'bl-datalist_error');
  1254. }
  1255. let TableName = 'FT_' + datalistname;
  1256. let dynamicQuery = this._queryParser.generateDynamicQuery($("#main_query"));
  1257. let QueryString = $("#" + containerid).find(".sql-textarea").val();
  1258. if ($("#" + containerid).find("#datalist_design").hasClass("active")) {
  1259. QueryTypeId = 1;
  1260. let QueryString = ``;
  1261. }
  1262. if ($("#chk_IsFlatTable").is(":checked") == true) {
  1263. isflattable = 1;
  1264. }
  1265. if ($("#chk_Scheduler").is(":checked") == true) {
  1266. scheduler = 1;
  1267. }
  1268. let customfilters = "";
  1269. if (instance._customfilters.customFilters.length != 0)
  1270. customfilters = JSON.stringify(instance._customfilters.customFilters);
  1271. var QueryData = {
  1272. DocProperties: SelectedDocProperties,
  1273. DocTypeIds: SelectedDoctypes,
  1274. DocTables: doctypelist,
  1275. ConditionGroups: SelectedGroups,
  1276. DataListJoins: SelectedJoins,
  1277. QueryString: null,
  1278. datalistid: this.DataListId
  1279. };
  1280. var postData = {
  1281. DataListId: Number(instance.DataListId),
  1282. DataListName: datalistname.toString(),
  1283. DataListTypeId: DataListTypeId,
  1284. DataSourceId: DataSourceId,
  1285. TableTypeId: Number($("#" + containerid).find(".TableType").val()),
  1286. IsCommon: $("#Iscommon_checkbox").is(":checked"),
  1287. QueryString: QueryString.toString(),
  1288. QueryTypeId: QueryTypeId,
  1289. IsFlattable: Boolean(isflattable),
  1290. StoredProcedureName: $("#" + containerid).find("#txt_spName").val().toString(),
  1291. FlatTableName: TableName,
  1292. TenureValue: Number($("#" + containerid).find("#txt_TenureValue").val()),
  1293. TenureTypeId: Number($("#" + containerid).find("#select_TenureType option:selected").val()),
  1294. Query: QueryData,
  1295. ContactColumns: $("#txt_SelectColumnName").val().toString(),
  1296. IsWhere: instance.IsWhere,
  1297. IsInternalDataList: instance.IsInternalDataList,
  1298. HasIdentityFilter: instance.HasIdentityFilter,
  1299. Parameters: $("#txt_parameters").val().toString().trim(),
  1300. FromDate: Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(), "YYYY/MM/DD"),
  1301. ToDate: Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(), "YYYY/MM/DD"),
  1302. PrimaryKeyColumn: $(".PrimaryKeyColumn").val().toString(),
  1303. DynamicQuery: dynamicQuery,
  1304. CustomFilters: customfilters,
  1305. IsAutoData: instance.IsAutoData,
  1306. InstalledAppId: isNaN(Number($("#InstalledApp_AutoComplete_DataList option:selected").val())) == true ? 0 : Number($("#InstalledApp_AutoComplete_DataList option:selected").val()),
  1307. IsGroupBy: instance.IsGroupBy,
  1308. EnableInsideWhere: instance.EnableInsideWhere,
  1309. IsFromUI: true,
  1310. };
  1311. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('/platform/datasources/managers/datalistmanager.js', function () {
  1312. Unibase.Platform.DataSources.Managers.DataListManager.Instance().saveDataList(postData).then(function (response) {
  1313. if (response.status === Unibase.Data.Status.Success) {
  1314. instance._customfilters.customFilters = [];
  1315. $('#' + containerid).modal('hide');
  1316. $('#' + containerid).remove();
  1317. return MessageHelper.Instance().showSuccess(response.message, 'bl-datalist_error');
  1318. ;
  1319. }
  1320. else {
  1321. return MessageHelper.Instance().showError(response.errors.join(","), 'bl-datalist_error');
  1322. }
  1323. });
  1324. });
  1325. }
  1326. initTable(containerid) {
  1327. var autoNumFormatter = function (cell) {
  1328. var row = cell.getRow();
  1329. var rowIndex = row.getPosition(false);
  1330. return (rowIndex + 1);
  1331. };
  1332. let table = new Tabulator("." + containerid + "-table-canvas", {
  1333. columns: [
  1334. { title: "", formatter: autoNumFormatter, frozen: true, minWidth: 40, width: 40 },
  1335. { title: "Name", field: "name" },
  1336. { title: "Age", field: "age" },
  1337. { title: "Gender", field: "gender" },
  1338. { title: "Height", field: "height" },
  1339. { title: "Favourite Color", field: "col" },
  1340. { title: "Date Of Birth", field: "dob" },
  1341. { title: "Cheese Preference", field: "cheese" },
  1342. ],
  1343. layout: "fitColumns"
  1344. });
  1345. return table;
  1346. }
  1347. load_data(containerid, table) {
  1348. var query = $("#" + containerid).find(".sql-textarea").val();
  1349. var queryinfo = {
  1350. DocProperties: null,
  1351. DocTypeIds: null,
  1352. DocTables: null,
  1353. ConditionGroups: null,
  1354. DataListJoins: null,
  1355. QueryString: query.toString(),
  1356. datalistid: this.DataListId
  1357. };
  1358. var iscommon = $("#Iscommon_checkbox").is(":checked");
  1359. var datasourceid = Number($(".DataSourceType").val());
  1360. var datalistid = this.DataListId;
  1361. if ($("#" + containerid).find("#sql-container").hasClass("show")) {
  1362. if (query != null && query != "" || $(".DatalistType").val() == 5) {
  1363. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('/platform/datasources/managers/datalistmanager.js', function () {
  1364. if ($(".DatalistType").val() == 5) {
  1365. Unibase.Platform.DataSources.Managers.DataListManager.Instance().getdatafromapi(datalistid).then(function (response) {
  1366. if (response.result != null) {
  1367. Unibase.Platform.DataSources.Components.DatalistBuilder.Instance().loadresponse(containerid, response.result);
  1368. }
  1369. });
  1370. }
  1371. else {
  1372. Unibase.Platform.DataSources.Managers.DataListManager.Instance().getTable(query.toString(), iscommon, datasourceid).then(function (response) {
  1373. if (response != null) {
  1374. Unibase.Platform.DataSources.Components.DatalistBuilder.Instance().loadresponse(containerid, response.result);
  1375. }
  1376. });
  1377. }
  1378. });
  1379. }
  1380. else {
  1381. alert("Please Enter a Query");
  1382. }
  1383. }
  1384. else {
  1385. $("." + containerid + "-table-canvas").removeClass("hidden");
  1386. var tableData = [
  1387. { id: 1, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1388. { id: 2, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1389. { id: 3, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1390. { id: 4, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1391. { id: 5, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1392. { id: 6, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1393. { id: 7, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1394. { id: 8, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1395. { id: 9, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1396. { id: 10, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1397. { id: 11, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1398. { id: 12, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1399. { id: 13, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1400. { id: 14, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1401. { id: 15, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1402. { id: 16, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1403. { id: 17, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1404. { id: 18, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1405. { id: 15, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1406. { id: 16, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1407. { id: 17, name: "sr", age: "12", gender: "male", height: 1, col: "red", dob: "", cheese: false },
  1408. { id: 18, name: "May", age: "1", gender: "female", height: 2, col: "blue", dob: "14/05/1982", cheese: true },
  1409. ];
  1410. table.setData(tableData);
  1411. var width = $("#" + containerid).find("#table-container").height() - 49 + "px";
  1412. console.log(width);
  1413. table.setHeight(width);
  1414. }
  1415. }
  1416. loadresponse(containerid, data) {
  1417. for (let i = 0; i < data.columns.length; i++) {
  1418. var Columns = data.columns;
  1419. }
  1420. $("#txt_SelectColumnName").select2({
  1421. placeholder: 'Select Contact Columns',
  1422. data: Columns,
  1423. });
  1424. $("#" + containerid).find(".tab-content").addClass("hidden");
  1425. $("#" + containerid).find(".table-container").addClass("hidden");
  1426. $("#" + containerid).find("#datalist-table").remove();
  1427. $("." + containerid + "-table-canvas").addClass("hidden");
  1428. $("#datalist-table").remove();
  1429. let html;
  1430. if (data.error == null) {
  1431. html = `<table id="datalist-table"><thead><tr>`;
  1432. for (let i = 0; i < data.columns.length; i++) {
  1433. html += `<th>` + data.columns[i].toString() + `</th>`;
  1434. }
  1435. ;
  1436. html += `</thead><tbody>`;
  1437. for (let i = 0; i < data.rows.length; i++) {
  1438. let temp = data.rows[i];
  1439. html += `<tr>`;
  1440. for (let j = 0; j < temp.length; j++) {
  1441. if (temp[j] == null) {
  1442. temp[j] = "null";
  1443. }
  1444. html += `<td>` + temp[j].toString() + `</td>`;
  1445. }
  1446. html += `</tr>`;
  1447. }
  1448. ;
  1449. html += `</tbody></table>`;
  1450. $("#" + containerid).find(".datalist-builder-body").append(html);
  1451. var table1 = new Tabulator("#datalist-table", {});
  1452. var width = $("#" + containerid).find(".datalist-builder-body").height() - 49 + "px";
  1453. console.log(width);
  1454. table1.setHeight(width);
  1455. }
  1456. else {
  1457. html = `<span id="span_error">` + data.error + `</span>`;
  1458. $("#" + containerid).find(".datalist-builder-body").append(html);
  1459. }
  1460. $("#btn-preview-close").click(function () {
  1461. if ($("#" + containerid).find("#sql-container").hasClass("show")) {
  1462. $("#" + containerid).find("#table-container").addClass("hidden");
  1463. $("#" + containerid).find("#datalist-table").remove();
  1464. $("#" + containerid).find(".tab-content").removeClass("hidden");
  1465. $("#btn-preview-close").addClass("hidden");
  1466. $("#btn-datalist-builder-close").removeClass("hidden");
  1467. $("#" + containerid).find(".datalist-builder-body").find("#span_error").remove();
  1468. }
  1469. else {
  1470. $("#" + containerid).find("#datalist-table").remove();
  1471. $("#" + containerid).find(".tab-content").removeClass("hidden");
  1472. $("#" + containerid).find(".table-container").addClass("hidden");
  1473. $("#btn-preview-close").addClass("hidden");
  1474. $("#btn-datalist-builder-close").removeClass("hidden");
  1475. $("#" + containerid).find(".datalist-builder-body").find("#span_error").remove();
  1476. }
  1477. });
  1478. }
  1479. loadChartIcons() {
  1480. let html = `<button class="btn btn-icon btn-icon-circle btn-icon-style-3"><i class="fa fa-bar-chart-o"></i></button><button class="btn btn-icon btn-icon-circle btn-icon-style-3"><i class="fa fa-building"></i></button><button class="btn btn-icon btn-icon-circle btn-icon-style-3"><i class="fa fa-filter"></i></button>`;
  1481. $("#bl-nav-chart").html(html);
  1482. $("#bl-nav-chart").height($("#chart-container").height());
  1483. }
  1484. loadTabs(containerid) {
  1485. let html = `<ul class="nav nav-tabs nav-light">
  1486. <li role="tablist" class="Active">
  1487. <a data-toggle="tab" href="#designer-container" id="datalist_design" class="nav-link active show">Design</a>
  1488. </li>
  1489. <li role="tablist"><a data-toggle="tab" href="#sql-container" id="datalist_sql" class="nav-link">SQL</a></li>
  1490. <li role="tablist"><a data-toggle="tab" href="#storedprocedure-container" id="datalist_storedprocedure" class="nav-link">StoredProcedure</a></li>
  1491. <li role="tablist"><a data-toggle="tab" href="#datalist_newsql_container_wrapper" id="datalist_tab_newsql" class="nav-link">New Sql</a></li>
  1492. </ul>`;
  1493. $("#" + containerid).find("#tab-container").html(html);
  1494. }
  1495. loadChartToggleButtons() {
  1496. let html = `<ul class="nav nav-pills"><button id="btnRefresh" class="btn btn-primary"><i class="fa fa-refresh"></i><span> Refresh</span></button><button class="btn btn-icon ml-5"><i class="fa fa-bar-chart-o"></i></button><button class="ml-5 btn btn-icon"><i class="fa fa-filter"></i></button></ul>`;
  1497. $("#tab-container").after(html);
  1498. }
  1499. loadTableToggleButtons() {
  1500. let html = `<ul class="nav nav-pills"><button id="btnRefresh" class="btn btn-primary"><i class="fa fa-refresh"></i><span> Refresh</span></button><button class="ml-5 btn btn-default"><i class="fa fa-cog"></i><span> Settings</span></button></ul>`;
  1501. $("#lbl-record-count").after(html);
  1502. }
  1503. static Instance() {
  1504. if (this.instance === undefined) {
  1505. this.instance = new DatalistBuilder();
  1506. }
  1507. return this.instance;
  1508. }
  1509. }
  1510. Components.DatalistBuilder = DatalistBuilder;
  1511. })(Components = DataSources.Components || (DataSources.Components = {}));
  1512. })(DataSources = Platform.DataSources || (Platform.DataSources = {}));
  1513. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1514. })(Unibase || (Unibase = {}));