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.

subform.component.js 51KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684
  1. var Unibase;
  2. (function (Unibase) {
  3. let Forms;
  4. (function (Forms) {
  5. let Controls;
  6. (function (Controls) {
  7. class SubForm {
  8. constructor() {
  9. this.Index = 0;
  10. }
  11. init(formpropertyid, prop, callback) {
  12. var instance = SubForm.Instance();
  13. }
  14. loadControl(containerid, prop) {
  15. var ControlJsonText = JSON.parse(prop.ControlJsonText);
  16. var html = '';
  17. var parentPkid = Unibase.Platform.Forms.Components.FormViewer.instance.Pk_Value;
  18. html = '<div class="divSubForm" class="SubformInstalledAppId" data-subforminstalledappid="' + ControlJsonText.InstalledAppId + '"><input type="hidden" id="SubformInstalledAppId_' + prop.FormPropertyId + '" value="' + ControlJsonText.InstalledAppId + '" ><div class="divNextSubForm_' + prop.UniqueId + ' hidden"></div><div class="divNextSubFormList_' + prop.UniqueId + ' divCheckRequired"><div class="subformControlData"></div><div class="subformBtnContainer text-center"></div><div class="subformTableDataList"></div></div></div>';
  19. if (ControlJsonText.EnableSubFormSettings == true) {
  20. html += '<div class="col-sm-3 div_SubFormdetails" id="div_subformsettings">' +
  21. '<a href="javascript:;" class="btn btn-success text-white btnAddSubForm btnSubform_' + prop.UniqueId + '" id="btnAddSubForm_' + prop.UniqueId + '" data-subformcount="0" data-islistsubform="false" /><span>' + ControlJsonText.ButtonName + '</span></a>' +
  22. '</div>';
  23. }
  24. $("#" + containerid).html(html);
  25. if (ControlJsonText.EnableSubFormSettings == true) {
  26. $("#btnAddSubForm_" + prop.UniqueId).click(function () {
  27. var childformdata = ControlJsonText.FormInfo;
  28. Unibase.Forms.Controls.SubForm.Instance().addButtonClick(childformdata, prop.UniqueId, ControlJsonText.SubFormName, ControlJsonText.ChildFormId, 0);
  29. });
  30. var html = '<div class="divSubFormUl loadfirstsubformdata hidden divNextSubForm_' + prop.UniqueId + ' divNextSubForm_' + prop.FormPropertyId + ' divNextSubForm_' + prop.UniqueId + '_0"><div class="card-header"><span class="pull-left">' + ControlJsonText.SubFormName + '-0' + '</span><a class="ml-auto btn-xs pull-right btn btn-icon btn-icon-circle btn-pink btn-icon-style-3 remove-icon_' + prop.FormPropertyId + '" href="javascript:;" title="Remove row" onclick="Unibase.Forms.Controls.SubForm.Instance().SubFormRemove(' + prop.FormPropertyId + ",0,\'" + ControlJsonText.SubFormName + '\');"><span class="btn-icon-wrap"><i class="fa fa-times remove-icon_ ' + prop.FormPropertyId + '"></i><span></span></span></a></div><div class="card-body divSubForm_' + prop.UniqueId + '" id="divSubForm_' + prop.UniqueId + '"></div></div>';
  31. $(".divNextSubForm_" + prop.UniqueId).after(html);
  32. var childformdata = ControlJsonText.FormInfo;
  33. if (childformdata == undefined) {
  34. Unibase.Platform.Forms.Managers.FormManager.Instance().getForm(ControlJsonText.ChildFormId).then(function (response) {
  35. var forminfo = response.result;
  36. var formviewerObj = {
  37. FormId: 0,
  38. AppConfigurationId: 0,
  39. Pk_Value: 0,
  40. PortletWidgetId: 0,
  41. OnSuccess: null,
  42. OnFail: null,
  43. OnLoad: null,
  44. FormContainer: null,
  45. };
  46. var subformhtml = Unibase.Platform.Forms.Components.FormViewer.instance.loadFormHtml(forminfo, true, "container-subform-0", formviewerObj, null);
  47. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(subformhtml.JsFiles, function () {
  48. $("#divSubForm_" + prop.UniqueId).html(subformhtml.TotalFormHtml);
  49. });
  50. });
  51. }
  52. else {
  53. if (parentPkid != 0) {
  54. var forminfos = childformdata;
  55. for (var i = 0; i < forminfos.length; i++) {
  56. var forminfo = forminfos[i];
  57. var childPkid = forminfos[i].Pk_Value;
  58. Unibase.Forms.Controls.SubForm.Instance().addButtonClick(forminfo, prop.UniqueId, ControlJsonText.SubFormName, ControlJsonText.ChildFormId, childPkid);
  59. }
  60. }
  61. }
  62. $("#btnAddSubForm_" + prop.UniqueId).attr("data-subformcount", 1);
  63. }
  64. if (ControlJsonText.EnableListFormSettings == true) {
  65. var childformdata = ControlJsonText.FormInfo;
  66. if (childformdata == undefined) {
  67. Unibase.Platform.Forms.Managers.FormManager.Instance().getForm(ControlJsonText.ChildFormId).then(function (response) {
  68. var forminfo = response.result;
  69. var formviewerObj = {
  70. FormId: 0,
  71. AppConfigurationId: 0,
  72. Pk_Value: 0,
  73. PortletWidgetId: 0,
  74. OnSuccess: null,
  75. OnFail: null,
  76. OnLoad: null,
  77. FormContainer: null,
  78. };
  79. var subformhtml = Unibase.Platform.Forms.Components.FormViewer.instance.loadFormHtml(forminfo, true, "container-subformlist-1", formviewerObj, null);
  80. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(subformhtml.JsFiles, function () {
  81. var listhtml = '<div class="divSubFormList_' + prop.UniqueId + '">' + subformhtml.TotalFormHtml + '</div>';
  82. listhtml += '<div class="col-sm-3 div_SubFormList" id="div_subformlist">' +
  83. '<a href="javascript:;" class="btn btn-success text-white btnSubform_' + prop.UniqueId + '" id="btnAddSubFormList_' + prop.UniqueId + '" data-subformcount="1" data-islistsubform="true"/><span class="fa fa-plus"></span></a>' +
  84. '</div><div id="divSubFormListData_' + prop.UniqueId + '" class="hidden"></div></div>';
  85. $(".divNextSubForm_" + prop.UniqueId).after(listhtml);
  86. $("#btnAddSubFormList_" + prop.UniqueId).click(function () {
  87. Unibase.Forms.Controls.SubForm.Instance().addButtonClickForList(prop.UniqueId, 0, forminfos, ControlJsonText, prop);
  88. });
  89. });
  90. });
  91. }
  92. else {
  93. var forminfos = childformdata;
  94. Unibase.Forms.Controls.SubForm.instance.loadSubformData(forminfos, ControlJsonText, prop);
  95. }
  96. }
  97. }
  98. loadSubformData(forminfos, ControlJsonText, prop) {
  99. var instance = this;
  100. for (var i = 0; i < forminfos.length; i++) {
  101. var forminfo = forminfos[i];
  102. var childPkid = forminfos[i].Pk_Value;
  103. var formviewerObj = {
  104. FormId: 0,
  105. AppConfigurationId: 0,
  106. Pk_Value: 0,
  107. PortletWidgetId: 0,
  108. OnSuccess: null,
  109. OnFail: null,
  110. OnLoad: null,
  111. FormContainer: null,
  112. };
  113. var subformhtml = Unibase.Platform.Forms.Components.FormViewer.instance.loadFormHtml(forminfo, true, "container-subformlist-1", formviewerObj, null);
  114. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(subformhtml.JsFiles, function () {
  115. var listhtml = '<form id="subformformValidate_' + prop.UniqueId + '" data-validate="parsley"><div class="divSubFormList_' + prop.UniqueId + ' divSubFormList" >' + subformhtml.TotalFormHtml + '</div>';
  116. listhtml += '<div class="div_SubFormList text-center" id="div_subformlist"></div></form>';
  117. $(".divNextSubFormList_" + prop.UniqueId + ' .subformControlData').html(listhtml);
  118. let issubFormListDivLoaded = $('.subformTableDataList').find("#divSubFormListData_" + prop.UniqueId);
  119. if (issubFormListDivLoaded.length == 0) {
  120. let addBtnHtml = '<a href="javascript:;" class="btn btn-success text-white btnSubform_' + prop.UniqueId + '" id="btnAddSubFormList_' + prop.UniqueId + '" data-subformcount="1" data-islistsubform="true"/>Add</a>';
  121. $(".divNextSubFormList_" + prop.UniqueId + ' .subformBtnContainer').html(addBtnHtml);
  122. let subformListHtml = '<div class="table-responsive"><table class="table sub-form-table hidden"><tbody id="divSubFormListData_' + prop.UniqueId + '"></tbody></table></div><div class="hidden subFormListFooter" id="subFormTableFooter_' + prop.UniqueId + '"><div class="d-flex flex-wrap justify-content-between align-items-center"><div class="checkListTotal"><span class="font-weight-500 text-dark">Total: </span><span class="visibleRowsCount"></span> of <span class="totalRowsCount"></span></div><div class="checkListMoreBtn hidden"><a href="javascript:;" onclick="Unibase.Forms.Controls.SubForm.Instance().loadMoreSubFormlist(' + prop.UniqueId + ');" class="btn btn-success btn-sm text-white loadMoreBtn">More</a></div></div></div>';
  123. $(".divNextSubFormList_" + prop.UniqueId + ' .subformTableDataList').html(subformListHtml);
  124. }
  125. $("#btnAddSubFormList_" + prop.UniqueId).off().click(function () {
  126. let formDivId = "subformformValidate_" + prop.UniqueId;
  127. var viewererobj = new Unibase.Platform.Forms.Components.FormViewer();
  128. let result = viewererobj.requiredFieldValidation(formDivId);
  129. if (result == false) {
  130. let requiredFieldsLength = $("#" + formDivId + " .form-group-required").length;
  131. if (requiredFieldsLength == 1) {
  132. let subFormPropertyName = $('.form-group-required').parents('.control-group').data('validatename');
  133. MessageHelper.Instance().showError(subFormPropertyName + " is required", 'div_ErrorMessage_' + ControlJsonText.ParentFormId);
  134. }
  135. else {
  136. MessageHelper.Instance().showError("Mandatory fields are missing", 'div_ErrorMessage_' + ControlJsonText.ParentFormId);
  137. }
  138. return false;
  139. }
  140. else {
  141. Unibase.Forms.Controls.SubForm.Instance().addButtonClickForList(prop.UniqueId, childPkid, forminfos, ControlJsonText, prop);
  142. }
  143. });
  144. });
  145. }
  146. }
  147. addButtonClick(ChildFormData, FormPropertyId, SubFormName, ChildFormId, Pk_Value) {
  148. $(".loadfirstsubformdata").addClass('hidden');
  149. var Index = Number($("#btnAddSubForm_" + FormPropertyId).attr("data-subformcount"));
  150. var namelength = Number($(".divNextSubForm_" + FormPropertyId + ".subformcls").length) + 1;
  151. var subformname = SubFormName + '-' + namelength;
  152. var CurrentContainer = $(".divNextSubForm_" + FormPropertyId);
  153. var html = '<div class="subformcls divNextSubForm_' + FormPropertyId + ' card subform_' + Index + '" data-index="' + Index + '"><div class="card-header"><span class="pull-left subformname subforname_' + FormPropertyId + '">' + subformname + '</span><a class="ml-auto btn-xs pull-right btn btn-icon btn-icon-circle btn-pink btn-icon-style-3 remove-icon_' + FormPropertyId + '_' + Index + '" href="javascript:;" title="Remove row" onclick="Unibase.Forms.Controls.SubForm.Instance().SubFormRemove(' + FormPropertyId + "," + Index + ",\'" + SubFormName + '\');"><span class="btn-icon-wrap"><i class="fa fa-times remove-icon_ ' + FormPropertyId + '_' + Index + '"></i><span></span></span></a></div><div class="card-body divSubForm_' + FormPropertyId + '" id="divSubForm_' + FormPropertyId + '_' + Index + '"></div></div>';
  154. $(CurrentContainer).last().after(html);
  155. if (ChildFormData == undefined) {
  156. Unibase.Platform.Forms.Managers.FormManager.Instance().getForm(ChildFormId).then(function (response) {
  157. var forminfo = response.result;
  158. var formviewerObj = {
  159. FormId: 0,
  160. AppConfigurationId: 0,
  161. Pk_Value: 0,
  162. PortletWidgetId: 0,
  163. OnSuccess: null,
  164. OnFail: null,
  165. OnLoad: null,
  166. FormContainer: null,
  167. };
  168. var subformhtml = Unibase.Platform.Forms.Components.FormViewer.instance.loadFormHtml(forminfo, true, "container-subform-" + Index, formviewerObj, null);
  169. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(subformhtml.JsFiles, function () {
  170. $("#divSubForm_" + FormPropertyId + '_' + Index).html(subformhtml.TotalFormHtml);
  171. $("#btnAddSubForm_" + FormPropertyId).attr("data-subformcount", Index + 1);
  172. });
  173. });
  174. }
  175. else {
  176. var forminfos = ChildFormData;
  177. for (var i = 0; i < forminfos.length; i++) {
  178. var forminfo = forminfos[i];
  179. var childPkid = forminfos[i].Pk_Value;
  180. var formviewerObj = {
  181. FormId: 0,
  182. AppConfigurationId: 0,
  183. Pk_Value: childPkid,
  184. PortletWidgetId: 0,
  185. OnSuccess: null,
  186. OnFail: null,
  187. OnLoad: null,
  188. FormContainer: null,
  189. };
  190. var subformhtml = Unibase.Platform.Forms.Components.FormViewer.instance.loadFormHtml(forminfo, true, "container-subform-" + Index, formviewerObj, null);
  191. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(subformhtml.JsFiles, function () {
  192. $("#divSubForm_" + FormPropertyId + '_' + Index).html(subformhtml.TotalFormHtml);
  193. $("#btnAddSubForm_" + FormPropertyId).attr("data-subformcount", Index + 1);
  194. });
  195. }
  196. }
  197. }
  198. addButtonClickForList(FormPropertyId, pk_value, forminfos, ControlJsonText, prop) {
  199. var temp = $("#btnAddSubFormList_" + FormPropertyId).attr("data-subformcount");
  200. var Index = temp;
  201. var html = '';
  202. var ItemRowLen = $('.CheckList-row-' + Index).length;
  203. var isFormValid = true;
  204. $(".divSubFormList_" + FormPropertyId).find(".value-control").each(function () {
  205. let value = $(this).val();
  206. value = $.trim(value);
  207. if ((value == "" || value == null || value == "0" || value == undefined)) {
  208. isFormValid = false;
  209. }
  210. else {
  211. isFormValid = true;
  212. return false;
  213. }
  214. });
  215. if (isFormValid) {
  216. if ($("#divSubFormListData_" + FormPropertyId + ' tr').length == 0) {
  217. $("#divSubFormListData_" + FormPropertyId).closest('table').removeClass('hidden').addClass('mt-20');
  218. html += `<tr class="bg-light">`;
  219. $(".divSubFormList_" + FormPropertyId).find(".value-control").each(function () {
  220. var formpropertyname = $(this).parents(".container-subformlist-1").attr("data-formpropertyname");
  221. var controlname = $(this).parents(".container-subformlist-1").attr("data-controlname");
  222. var placeholdernameAuto = $(this).parents(".container-subformlist-1").attr("data-validatename");
  223. var placeholdername = $(this).parents(".container-subformlist-1").find(".value-control").attr("data-placeholder");
  224. var hiddenitem = controlname == "HiddenField" ? "hidden" : "";
  225. html += '<th ' + hiddenitem + '><div class="container-subform-list-' + Index + '" class="divsubformlist_placeholder" data-formpropertyname="' + formpropertyname + '"><input type="hidden" class="' + placeholdernameAuto + '" value="' + placeholdernameAuto + '"/><span class="CheckListItemName_placeholder" ' + hiddenitem + ' id="CheckListItemName_Placeholder' + Index + '" ><strong>' + placeholdernameAuto + '</strong></span>' +
  226. '<input type="hidden" value=' + Index + ' class="CheckListId_placeholder">' +
  227. '<input type="hidden" value=' + Index + ' class="hf_CheckListIndex_placeholder"></div></th>';
  228. });
  229. html += '<th class="font-weight-bold text-right">Delete</th></tr>';
  230. }
  231. let isHidden = "";
  232. $("#subFormTableFooter_" + FormPropertyId).removeClass('hidden');
  233. if ($("#divSubFormListData_" + FormPropertyId + ' tr').length >= 6) {
  234. isHidden = "hidden";
  235. $("#subFormTableFooter_" + FormPropertyId + " .checkListMoreBtn").removeClass('hidden');
  236. }
  237. html += '<tr class="' + isHidden + ' CheckList-item-row divSubForm_' + FormPropertyId + ' CheckList-row-' + Index + '" id="li_CheklistItem_' + Index + '" >' +
  238. '<input type="hidden" class="hf_CheckListId" value="' + Index + '">';
  239. var check = -1;
  240. $(".divSubFormList_" + FormPropertyId).find(".value-control").each(function () {
  241. if (($(this).val() == "") && ($(this).parents('.control-group').data('controlname') == 'NumberBox')) {
  242. $(this).val('0');
  243. }
  244. $(this).parent('.floating-label-form-group').removeClass('floating-label-form-group-with-value');
  245. var value = $(this).val();
  246. if ((value == "" || value == null || value == "0" || value == undefined) && (check != 1)) {
  247. check = 1;
  248. }
  249. else {
  250. check = 0;
  251. }
  252. var formpropertyname = $(this).parents(".container-subformlist-1").attr("data-formpropertyname");
  253. var controlname = $(this).parents(".container-subformlist-1").attr("data-controlname");
  254. var hiddenitem = controlname == "HiddenField" ? "hidden" : "";
  255. var text = "";
  256. if (controlname == "AutoComplete") {
  257. text = $("#" + $(this).attr("data-autotextid") + " option:selected").text();
  258. }
  259. else if (controlname == "DatePicker") {
  260. text = $(this).siblings('.datepicker-input').val();
  261. }
  262. else if (controlname == "DropDown") {
  263. text = $(this).find(":selected").text();
  264. }
  265. else if (controlname == "CascadingAutocomplete") {
  266. text = $("#" + $(this).attr("data-autotextid") + " option:selected").text();
  267. }
  268. else if (controlname == "Select2") {
  269. text = $(this).attr("data-text");
  270. }
  271. else {
  272. text = $(this).val();
  273. }
  274. var Id = $(this).attr("id");
  275. if (controlname == "HiddenField") {
  276. $("#" + Id).val("0");
  277. }
  278. if (controlname == "AutoComplete") {
  279. var autocompleteId = $(this).parent().find('select').attr("id");
  280. $("#" + autocompleteId).empty();
  281. }
  282. html += '<td ' + hiddenitem + '><div class="container-subform-list-' + Index + '" class="divsubformlist" data-formpropertyname="' + formpropertyname + '"><input type="hidden" class="value-control" value="' + value + '"/><span class="CheckListItemName" ' + hiddenitem + ' id="CheckListItemName_' + Index + '" >' + text + '</span>' +
  283. '<input type="hidden" value=' + Index + ' class="CheckListId" >' +
  284. '<input type="hidden" value=' + Index + ' class="hf_CheckListIndex"></div></td>';
  285. });
  286. html += '<td class="text-right">' +
  287. '<a class="btn-icon" href="javascript:;" onclick="Unibase.Forms.Controls.SubForm.Instance().removeChekList(' + Index + ',' + FormPropertyId + ');" >' +
  288. '<i class="fa fa-trash-o text-danger" ></i></a>' +
  289. '</td>' +
  290. '</tr>';
  291. $(".hf_CheckListId").val(Index);
  292. $("#divSubFormListData_" + FormPropertyId).append(html);
  293. $("#btnAddSubFormList_" + FormPropertyId).attr("data-subformcount", Number(Index) + 1);
  294. let totalRowsCount = $("#divSubFormListData_" + FormPropertyId + ' tr').length - 1;
  295. let visibleRowsCount = totalRowsCount - $("#divSubFormListData_" + FormPropertyId + ' tr.hidden').length;
  296. $("#subFormTableFooter_" + FormPropertyId).find('span.totalRowsCount').text(totalRowsCount);
  297. $("#subFormTableFooter_" + FormPropertyId).find('span.visibleRowsCount').text(visibleRowsCount);
  298. Unibase.Forms.Controls.SubForm.instance.loadSubformData(forminfos, ControlJsonText, prop);
  299. }
  300. }
  301. loadMoreSubFormlist(FormPropertyId) {
  302. $("#divSubFormListData_" + FormPropertyId + " tr.hidden").each(function (index, item) {
  303. if (index < 5) {
  304. $(item).removeClass('hidden');
  305. let totalRowsCount = $("#divSubFormListData_" + FormPropertyId + ' tr').length - 1;
  306. let visibleRowsCount = totalRowsCount - $("#divSubFormListData_" + FormPropertyId + ' tr.hidden').length;
  307. $("#subFormTableFooter_" + FormPropertyId).find('span.visibleRowsCount').text(visibleRowsCount);
  308. if (visibleRowsCount == totalRowsCount) {
  309. $("#subFormTableFooter_" + FormPropertyId + " .checkListMoreBtn").addClass('hidden');
  310. }
  311. }
  312. });
  313. }
  314. loadControl_delete(containerid, prop) {
  315. var Index = 0;
  316. SubForm.instance.Subprops = [];
  317. SubForm.instance.Subprops.push(prop);
  318. let html = '';
  319. var id = JSON.parse(prop.ControlJsonText);
  320. SubForm.Instance().EnableListFormSettings = id.EnableListFormSettings;
  321. SubForm.Instance().EnableSubFormSettings = id.EnableSubFormSettings;
  322. Unibase.Forms.Controls.SubForm.instance.loadingjsfiles(id);
  323. if ($('#EnableSubForm').length != 0 && $("#isclcikevent").val() == "true") {
  324. var FormPropertyId = prop.FormPropertyId + Number($("#SubFormIndex").val());
  325. html += '<div id="divSub_' + FormPropertyId + '" class="div_' + FormPropertyId + '"><input type="hidden" id="hdn_Containerid" value="' + containerid + '">';
  326. html += '</div>';
  327. }
  328. else {
  329. html += '<div id="div_' + prop.DocPropertyName + '_' + prop.FormPropertyId + '" class="div_' + prop.DocPropertyName + '_' + prop.FormPropertyId + '">';
  330. html += '</div>';
  331. }
  332. if ($('#EnableSubForm').length == 0) {
  333. html += '<input type="hidden" id="SubFormIndex" value="0">';
  334. }
  335. else if ($('#EnableSubForm').length != 0 && $("#isclcikevent").val() == "true") {
  336. html += '<input type="hidden" id="IsSubFormExist" value="true">';
  337. }
  338. SubForm.instance.Index = moment().valueOf();
  339. $("#" + containerid).html(html);
  340. if ($('#EnableSubForm').length == 0) {
  341. var html1 = '<div class="lastdiv"></div><div id="Subform_id"><input type="hidden" id="isclcikevent" value="false"><input type="hidden" id="SubformInstalledAppId" value="' + id.InstalledAppId + '"><input type="hidden" id="subform_FormPropertyId" value="' + prop.FormPropertyId + '"><input type="hidden" id="checkedevent" value="false"><input type="hidden" id="SubFormButtonText" value="' + id.ButtonName + '"><div class="row" id="EnableSubForm"></div>' +
  342. '<input type="hidden" id="Subform_ChildFormId" value="' + id.ChildFormId + '"><input type="hidden" id="MultipleSubFormIndex" value="0"><input type="hidden" id="Subform_DocPropertyName" value="' + prop.DocPropertyName + '"><input type="hidden" id="Subform_SectionName" value=""><input type="hidden" id="Subform_SubFormName" value="' + id.SubFormName + '"><input type="hidden" id="Subform_SectionId" value="' + prop.SectionId + '">';
  343. if (id.EnableSubFormSettings == true) {
  344. html1 += '<div class="col-sm-3 div_SubFormdetails" id="div_subformsettings">' +
  345. '<a href="javascript:;" class="btn btn-success text-white" onclick="Unibase.Forms.Controls.SubForm.Instance().subFormSettings(' + id.ChildFormId + ',Unibase.Forms.Controls.SubForm.Instance().Subprops[' + Index + '])"><span>' + id.ButtonName + '</span></a>' +
  346. '</div>';
  347. }
  348. html1 += '</div>';
  349. $("#" + containerid).append(html1);
  350. var value = Number($('#MultipleSubFormIndex').val());
  351. $('#MultipleSubFormIndex').val(value + 1);
  352. }
  353. }
  354. LoadCheckListForm(Index) {
  355. var len = $('.CheckList-row').length;
  356. if (len == 0) {
  357. len = 1;
  358. }
  359. let html = '<div class="card div_CheckListform col-sm-12"><div class="card-header"><span>Add Check Lists</span></div><div class="card-body CheckListform"><div class="CheckListform-row col-sm-2" id="CheckListform-row"></div><div class="CheckList-row added-row value-row card" id="div_Checklist_' + len + '">' +
  360. '<ul id="ul_chekList_items">' +
  361. '<li class="list-group-item" >' +
  362. '<div class="row">' +
  363. '<div class="col-11 ml-10" >' +
  364. '<div class="floating-label-form-group" ><input type="text" maxlength="500" class="form-control floating-label-control CheckListItem" id="txt_CheckListItem_' + len + '" data-isdynamic="false" placeholder="Checklist Item *" data-placeholder="Checklist Item *" data-label="Checklist Item *">' +
  365. '<input type="hidden" id="hf_CheckListId_' + len + '" ></div> ' +
  366. '</div>' +
  367. '<div class="row"><div class="col-6"><a id="btnAddItemPayout" href="javascript:;" onclick=" Unibase.Forms.Controls.SubForm.Instance().addNewCheckListItem(' + len + ')" class="btn-icon "><i class="fa fa-plus ml-25 mt-20"></i></a></div>' +
  368. '</div ></div >' +
  369. '</li>' +
  370. '<li class="CheckList-row-' + len + '" id="hfli_ChecklistItem_' + len + '"></li>' +
  371. '</ul></div>' +
  372. '</div>';
  373. $('#div_' + $("#Subform_DocPropertyName").val() + '_' + $("#subform_FormPropertyId").val() + '').after(html);
  374. }
  375. addNewCheckListItem(len) {
  376. var currentindex = 0;
  377. var formpropertyid = 0;
  378. var Index = Number(currentindex);
  379. var d = $(".hf_CheckListId").val();
  380. var i = Number(d);
  381. if (d == undefined) {
  382. Index = Index + 1;
  383. }
  384. else {
  385. Index = i + 1;
  386. }
  387. $("#SubFormIndex").val(Index);
  388. var BasicaddNewCheckListItem_Template = Unibase.Forms.Controls.SubForm.Instance().GetCheckListItem(Index, formpropertyid);
  389. var container_div = '<div class="container-subform-' + Index + '">' + BasicaddNewCheckListItem_Template + '</div>';
  390. $('#div_' + $("#Subform_DocPropertyName").val() + '_' + $("#subform_FormPropertyId").val() + '').after(BasicaddNewCheckListItem_Template);
  391. }
  392. GetCheckListItem(len, formpropertyid) {
  393. var temp = len;
  394. var Index = temp;
  395. var html = '';
  396. var emptyformpropertyname = "";
  397. var ItemRowLen = $('.CheckList-row-' + Index).length;
  398. let formpropertid;
  399. html += '<li class="list-group-item CheckList-item-row CheckList-row-' + Index + '" id="li_CheklistItem_' + Index + '">' +
  400. '<input type="hidden" class="hf_CheckListId" value="' + Index + '">' +
  401. '<div class="row" > ' +
  402. '<div class="col-11 row">';
  403. $(".container-subform-list-0").find(".value-control").each(function () {
  404. var id = $(this).attr('id');
  405. var FrmPropertyName = $(this).parents('.container-subform-list-0').data('formpropertyname');
  406. var FrmPrtyid = $(this).parents('.container-subform-list-0').data('formpropertyid');
  407. let formpropertyname = $("#" + id).val();
  408. formpropertid = $("#" + id).val();
  409. var cntrlclass = $(this).attr('class');
  410. var cls = cntrlclass.split(' ');
  411. var arraycontainsbycontrollername = (cls.indexOf("txtSeriesAutoComplete_" + FrmPropertyName) > -1);
  412. if (arraycontainsbycontrollername == true) {
  413. formpropertid = $("#" + id + " option:selected").val();
  414. formpropertyname = $("#" + id + " option:selected").text();
  415. var seriesautocompelete = $("#" + id + " option:selected").val();
  416. if (seriesautocompelete == undefined || seriesautocompelete == "0") {
  417. formpropertyname = "";
  418. }
  419. }
  420. var Autocompletecontrollername = (cls.indexOf("txtAutoComplete_" + FrmPropertyName) > -1);
  421. if (Autocompletecontrollername == true) {
  422. formpropertid = $("#" + id + " option:selected").val();
  423. formpropertyname = $("#" + id + " option:selected").text();
  424. var autocompelete = $("#" + id + " option:selected").val();
  425. if (autocompelete == undefined || seriesautocompelete == "0") {
  426. formpropertyname = "";
  427. }
  428. }
  429. var DropDowncontrollername = "ddl_" + FrmPropertyName + "_" + FrmPrtyid;
  430. if (DropDowncontrollername == id) {
  431. formpropertid = $("#" + id + " option:selected").val();
  432. formpropertyname = $("#" + id + " option:selected").text();
  433. var DropDown = $("#" + id + " option:selected").val();
  434. if (DropDown == undefined || seriesautocompelete == "0") {
  435. formpropertyname = "";
  436. }
  437. }
  438. if (formpropertyname != "" && formpropertyname != null) {
  439. if (formpropertid == "0") {
  440. formpropertyname = "";
  441. }
  442. html += '<div class="container-subform-' + Index + '" data-formpropertyname="' + FrmPropertyName + '"><input type="hidden" class="value-control" value="' + formpropertid + '"/><span class="CheckListItemName pl-25 col-sm-3" id="CheckListItemName_' + Index + '" >' + formpropertyname + '</span>' +
  443. '<input type="hidden" value=' + Index + ' class="CheckListId" >' +
  444. '<input type="hidden" value=' + Index + ' class="hf_CheckListIndex"></div>';
  445. $("#" + id).val(0);
  446. $("#" + id + " option:selected").val(0);
  447. $("#" + id + " option:selected").text('-- Select --');
  448. }
  449. emptyformpropertyname += formpropertyname;
  450. });
  451. html += '</div><div class="col-1 ml-md-2 pl-md-60">' +
  452. '<a class="btn-icon" href="javascript:;" onclick="Unibase.Forms.Controls.SubForm.Instance().removeChekList(' + Index + ',' + formpropertyid + ');" >' +
  453. '<i class="fa fa-trash-o text-danger" ></i></a>' +
  454. '</div></div>' +
  455. '</li>';
  456. $(".hf_CheckListId").val(Index);
  457. if (emptyformpropertyname == "" || emptyformpropertyname == "0") {
  458. html = "";
  459. }
  460. return html;
  461. }
  462. removeChekList(CheckListIndex, formProperyId) {
  463. let checkListItem = $('#divSubFormListData_' + formProperyId + ' #li_CheklistItem_' + CheckListIndex);
  464. let tableDiv = $(checkListItem).closest('table');
  465. let tableBody = $(checkListItem).parent('tbody');
  466. let tableFooter = $(tableDiv).parent('.table-responsive').next('.subFormListFooter');
  467. if ($(tableDiv).find('tr').length == 2) {
  468. $(tableDiv).addClass('hidden').removeClass('mt-20');
  469. $(tableFooter).addClass('hidden');
  470. $(checkListItem).parent().html('');
  471. }
  472. $(checkListItem).remove();
  473. let totalRowsCount = tableBody.find('tr').length - 1;
  474. let visibleRowsCount = totalRowsCount - tableBody.find('tr.hidden').length;
  475. if (visibleRowsCount <= 5) {
  476. if ($(tableBody).find('tr.hidden').length > 0) {
  477. $(tableBody).find('tr.hidden').first().removeClass('hidden');
  478. visibleRowsCount += 1;
  479. }
  480. }
  481. $(tableFooter).find('span.totalRowsCount').text(totalRowsCount);
  482. $(tableFooter).find('span.visibleRowsCount').text(visibleRowsCount);
  483. if (visibleRowsCount == totalRowsCount) {
  484. tableFooter.find('.checkListMoreBtn').addClass('hidden');
  485. }
  486. }
  487. loadControlSettings(controlsettingjson, formpropertyid) {
  488. return ``;
  489. }
  490. loadPropertySettings(propertysettings, formpropertyid) {
  491. return ``;
  492. }
  493. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  494. $("#txt_" + formpropertyid).val(propval);
  495. }
  496. subFormSettings(formid, prop) {
  497. var setting = JSON.parse(prop.ControlJsonText);
  498. var subformlistSetting = setting.EnableListFormSettings;
  499. var containerClass = "container-subform-" + $("#SubFormIndex").val();
  500. if (subformlistSetting == true) {
  501. containerClass = "container-subform-list-" + $("#SubFormIndex").val();
  502. }
  503. var rowid = moment().valueOf();
  504. $("#isclcikevent").val("true");
  505. $("#Subform_id").addClass('hidden');
  506. $(".div_SubFormdetails").addClass('hidden');
  507. var sectionnanme = $("#section_" + prop.SectionId).text();
  508. var value = Number($("#SubFormIndex").val()) + 1;
  509. $("#SubFormIndex").val(value);
  510. $("#Subform_SectionName").val(sectionnanme);
  511. $("#Subform_SectionId").val(prop.SectionId);
  512. SubForm.instance.Index = rowid;
  513. var successCallBack = {
  514. CallBack: function (id) {
  515. Bizgaze.Apps.Transact.Managers.LedgerManager.Instance().getLedgerById(id).then(function (response) {
  516. var rowid = Bizgaze.Forms.Controls.Tax.Instance().length;
  517. Bizgaze.Forms.Controls.Tax.Instance().bindLedgers(rowid, response.result.LedgerId, response.result.LedgerName);
  518. });
  519. },
  520. Parameters: null,
  521. };
  522. var formviewerObj = {
  523. FormId: Number($("#Subform_ChildFormId").val()),
  524. AppConfigurationId: 0,
  525. Pk_Value: 0,
  526. PortletWidgetId: 0,
  527. OnSuccess: successCallBack,
  528. OnFail: null,
  529. OnLoad: null,
  530. FormContainer: null,
  531. };
  532. var viewererobj = new Unibase.Platform.Forms.Components.FormViewer();
  533. viewererobj.init(formviewerObj);
  534. }
  535. SubFormRemove(formpropertyid, Index, subformname) {
  536. var totalcount = Number($("#btnAddSubForm_" + formpropertyid).data("subformcount"));
  537. $("#btnAddSubForm_" + formpropertyid).data("subformcount", totalcount - 1);
  538. $('.divNextSubForm_' + formpropertyid + '.subform_' + Index).remove();
  539. SubForm.instance.refreshList(formpropertyid, subformname);
  540. }
  541. refreshList(formpropertyid, subformname) {
  542. var index = 0;
  543. $('.divNextSubForm_' + formpropertyid + '.subformcls').each(function () {
  544. index++;
  545. $(this).find(".subforname_" + formpropertyid).text(subformname + "-" + index);
  546. });
  547. }
  548. loadhtml(Index, prop, RoleClass, SubformIndex) {
  549. var html = "";
  550. let subformlistSetting;
  551. var setting = JSON.parse(prop.ControlJsonText);
  552. if (setting != null) {
  553. subformlistSetting = setting.EnableListFormSettings;
  554. }
  555. else {
  556. subformlistSetting = false;
  557. }
  558. var containerClass = "container-subform-" + SubformIndex;
  559. if (subformlistSetting == true) {
  560. containerClass = "container-subform-list-" + SubformIndex;
  561. }
  562. if ($("#isclcikevent").val() == "true") {
  563. html += '<div id="control-container-' + prop.UniqueId + '" class="control-group ' + containerClass + ' divCustomProperties_' + prop.DocPropertyName + ' controldata_' + prop.DocPropertyId + ' col-sm-' + prop.PropertyWidth + RoleClass + '" data-size="' + prop.PropertyWidth + '" data-propertyname="' + prop.DocPropertyName + '" data-propertyid="' + prop.DocPropertyId + '" data-doctypeid="' + prop.DocTypeId + '" data-level="' + prop.Level + '" data-doctypetable="' + prop.DocTypeTableName + '" data-doctypename="' + prop.DocTypeName + '" data-isdefault="' + prop.IsDefault + '" data-RowIndex="' + prop.RowIndex + '" data-formpropertyid="' + prop.FormPropertyId + '" data-controlname="' + prop.ControlName + '" data-formpropertyname="' + prop.FormPropertyName + '" data-validatename="' + prop.LabelName + '"></div>';
  564. }
  565. else if (prop.ControlName == "SubForm") {
  566. html += '<div id="control-container-' + prop.FormPropertyId + '" class="control-group divCustomProperties divCustomProperties_' + prop.DocPropertyName + ' controldata_' + prop.DocPropertyId + ' col-sm-12' + RoleClass + '" data-size="' + prop.PropertyWidth + '" data-propertyname="' + prop.DocPropertyName + '" data-propertyid="' + prop.DocPropertyId + '" data-doctypeid="' + prop.DocTypeId + '" data-level="' + prop.Level + '" data-doctypetable="' + prop.DocTypeTableName + '" data-doctypename="' + prop.DocTypeName + '" data-isdefault="' + prop.IsDefault + '" data-RowIndex="' + prop.RowIndex + '" data-formpropertyid="' + prop.FormPropertyId + '" data-controlname="' + prop.ControlName + '" data-formpropertyname="' + prop.FormPropertyName + '" data-validatename="' + prop.LabelName + '"></div>';
  567. }
  568. return html;
  569. }
  570. finalhtml(html, totalform, prop, script, formcontainerclass) {
  571. var Subtotalform = '<script type="text/javascript">' +
  572. '$(document).ready(function () {' +
  573. 'var _fileCacheHelper = Unibase.Platform.Helpers.FileCacheHelper.Instance();' +
  574. '_fileCacheHelper.loadJsFile("' + prop.JsUrl + '", function () {' + script +
  575. prop.FormJsVariableName + '.Instance();';
  576. if (prop.JsText != "" && prop.JsText != null) {
  577. var RegExp_Prop = new RegExp("{{container}}", "gi");
  578. var jstext = prop.JsText.replace(RegExp_Prop, formcontainerclass);
  579. Subtotalform += jstext;
  580. }
  581. Subtotalform += '});});</script>';
  582. if ($("#IsSubFormExist").val() == "true") {
  583. $("#subform_FormPropertyId").val();
  584. var Id = Number($("#subform_FormPropertyId").val()) + Number($("#SubFormIndex").val());
  585. ;
  586. var Containerid1 = $("#hdn_Containerid").val();
  587. var sub1 = html;
  588. sub1 += Subtotalform;
  589. $("#" + Containerid1).removeClass();
  590. $("#" + Containerid1).addClass('control-group divCustomProperties controldata_ col-sm-12');
  591. $("#" + Containerid1).find('#divSub_' + Id).append(sub1);
  592. $("#IsSubFormExist").val("false");
  593. }
  594. else if ($("#isclcikevent").val() == "true") {
  595. $(".div_SubFormdetai").empty();
  596. $(".div_SubFormdetai").removeAttr("style");
  597. var rowid1 = moment().valueOf();
  598. var SectionName = $("#Subform_SectionName").val();
  599. var SectionId = $("#Subform_SectionId").val();
  600. var ChildFormId = Number($("#Subform_ChildFormId").val());
  601. var index = SubForm.instance.Index;
  602. var FormPropertyid = $("#subform_FormPropertyId").val();
  603. var sub = '<div class="section_' + SectionName + ' card">';
  604. sub += '<div class="card-header" id="section_' + SectionId + '">' + SectionName + '</div>';
  605. sub = '<div class="dummy ' + formcontainerclass + '">' + html + '</div>';
  606. sub += Subtotalform;
  607. sub += '</div>';
  608. sub += '<div class="lastdiv"></div><div class="col-sm-3 div_SubFormdetai" style="padding-bottom:20px" id="div_subformsettings' + index + '">' +
  609. '<a href="javascript:;" class="btn btn-success text-white" title="Delete Item" onclick="Unibase.Forms.Controls.SubForm.Instance().subFormSettings(' + ChildFormId + ',Unibase.Forms.Controls.SubForm.Instance().Subprops[0])"><span>' + $("#SubFormButtonText").val() + '</span></a>' +
  610. '</div>';
  611. $(".lastdiv:last").after(sub);
  612. $("#IsSubFormExist").val("false");
  613. }
  614. else {
  615. $('#div_' + $("#Subform_DocPropertyName").val() + '_' + $("#subform_FormPropertyId").val() + '').append(totalform);
  616. }
  617. }
  618. loadingjsfiles(props) {
  619. Unibase.Platform.Forms.Managers.FormManager.Instance().getForm(props.ChildFormId).then(function (response) {
  620. var data = response.result;
  621. var json = JSON.parse(data.FormJson);
  622. for (var k = 0; k < json.Sections.length; k++) {
  623. var section = json.Sections[k];
  624. for (var j = 0; j < section.FormProperties.length; j++) {
  625. var prop = section.FormProperties[j];
  626. if (prop != undefined) {
  627. if (prop.PropertyType != "Section") {
  628. var controljsurl = prop.ControlJsUrl;
  629. controljsurl = controljsurl;
  630. var _fileCacheHelper = Unibase.Platform.Helpers.FileCacheHelper.Instance();
  631. _fileCacheHelper.loadJsFile(controljsurl, function () { });
  632. }
  633. }
  634. }
  635. }
  636. var subformlistSetting = props.EnableListFormSettings;
  637. var containerClass = "container-subform-" + $("#SubFormIndex").val();
  638. if (subformlistSetting == true) {
  639. containerClass = "container-subform-list-" + $("#SubFormIndex").val();
  640. }
  641. var successCallBack = {
  642. CallBack: function (id) {
  643. Bizgaze.Apps.Transact.Managers.LedgerManager.Instance().getLedgerById(id).then(function (response) {
  644. var rowid = Bizgaze.Forms.Controls.Tax.Instance().length;
  645. Bizgaze.Forms.Controls.Tax.Instance().bindLedgers(rowid, response.result.LedgerId, response.result.LedgerName);
  646. });
  647. },
  648. Parameters: null,
  649. };
  650. var formviewerObj = {
  651. FormId: props.ChildFormId,
  652. AppConfigurationId: 0,
  653. Pk_Value: 0,
  654. PortletWidgetId: 0,
  655. OnSuccess: successCallBack,
  656. OnFail: null,
  657. OnLoad: null,
  658. FormContainer: null,
  659. };
  660. var viewererobj = new Unibase.Platform.Forms.Components.FormViewer();
  661. viewererobj.init(formviewerObj);
  662. });
  663. }
  664. removeRequiredclass(container) {
  665. $("." + container).find('.type-control').each(function () {
  666. var id = $(this).attr('id');
  667. var viewererobj = new Unibase.Platform.Forms.Components.FormViewer();
  668. viewererobj.removeRequiredClass("#" + id);
  669. });
  670. }
  671. static Instance() {
  672. if (this.instance === undefined) {
  673. this.instance = new SubForm();
  674. }
  675. return this.instance;
  676. }
  677. }
  678. Controls.SubForm = SubForm;
  679. class SubFormSetting {
  680. }
  681. Controls.SubFormSetting = SubFormSetting;
  682. })(Controls = Forms.Controls || (Forms.Controls = {}));
  683. })(Forms = Unibase.Forms || (Unibase.Forms = {}));
  684. })(Unibase || (Unibase = {}));