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.

scan.component.js 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. var Unibase;
  2. (function (Unibase) {
  3. let Forms;
  4. (function (Forms) {
  5. let Controls;
  6. (function (Controls) {
  7. class Scan {
  8. constructor() {
  9. this.data = [];
  10. this.setparameter = "";
  11. this.propobj = "";
  12. this.propEle = null;
  13. }
  14. init(formpropertyid, prop, callback) {
  15. var instance = Scan.Instance();
  16. instance.loadControlSettings(prop.ControlJsonText, prop.FormPropertyId);
  17. instance.loadPropertySettings(prop.PropertySettings, prop.FormPropertyId);
  18. this.propEle = prop;
  19. $("#crpnrd_btn_OpenScanner_" + prop.UniqueId).click(function () {
  20. if (isMobileApp()) {
  21. Unibase.Platform.Helpers.MobileHelper.Instance().openQrScanner('Unibase.Forms.Controls.Scan.Instance().readScanner', prop.UniqueId.toString());
  22. }
  23. });
  24. $("#scan_" + prop.UniqueId).on('change', function (event) {
  25. Unibase.Forms.Controls.Scan.Instance().executeRedeemProcess(Unibase.Forms.Controls.Scan.Instance().propEle);
  26. $("#scan_" + prop.UniqueId).focus();
  27. });
  28. if (callback != null)
  29. callback();
  30. }
  31. executeRedeemProcess(prop) {
  32. var data = JSON.parse(prop.ControlJsonText);
  33. var SumColumn = data.SumColumn;
  34. var EnableCount = data.EnableCount;
  35. var Displaytext = data.DisplayText;
  36. var filtercolumn = data.FilterColumn;
  37. var text = $("#scan_" + prop.UniqueId).val();
  38. text = text.toString().toUpperCase().trim();
  39. $("#divDisplayText").text(Displaytext);
  40. var IsLengthChecked = true;
  41. function isValid(str) {
  42. return !/[~`!#$%\^&@*+=\-\[\]\\';.|,/{}|\\":<>\?]/g.test(str);
  43. }
  44. let validate = isValid(text);
  45. if (!validate) {
  46. $("#divErrors").append("<span style='color:red;'>Special Characters not allowed </span><br/>");
  47. $("#scan_" + prop.UniqueId).val('');
  48. return false;
  49. }
  50. if (data.ReportId != 0) {
  51. var ColumnName = "0";
  52. var Value = "0";
  53. var Parameters = Unibase.Forms.Controls.Scan.Instance().setparameter;
  54. var cpnobj = Unibase.Forms.Controls.Scan.Instance().propobj;
  55. if (Parameters != null && Parameters != "") {
  56. ColumnName = Parameters.map(function (item) { return item.ColumnName; }).toString();
  57. Value = Parameters.map(function (item) { return item.Value + "|"; }).toString();
  58. }
  59. var totalcount = 0;
  60. var totalsum = 0;
  61. if ($("#div_FormName").text() != "Serial No") {
  62. Unibase.Platform.Forms.Managers.FormManager.Instance().getScanPropertyData(prop.FormPropertyId, text.toString(), ColumnName, Value).then(function (response) {
  63. if (response.status == Unibase.Data.Status.Error) {
  64. $("#divErrors").append("<span style='color:red;'>" + response.message + "</span><br/>");
  65. $("#scan_" + prop.UniqueId).val('');
  66. }
  67. else {
  68. var jsondata = response.result;
  69. if (jsondata != null && jsondata != undefined && $("#div_FormName").text() != "Serial No" && $("#div_FormName").text() != 'Coupon Redemption' && $("#div_FormName").text() != 'Loyalty Points') {
  70. var templateScript = Handlebars.compile(data.TemplateText);
  71. var html = '';
  72. totalsum = Number($("#lblSum_" + prop.UniqueId).text());
  73. totalcount = Number($("#lblCount_" + prop.UniqueId).text());
  74. $("#lblCount_" + prop.UniqueId).text(totalcount + jsondata.length);
  75. for (var i = 0; i < jsondata.length; i++) {
  76. var dataExist = eval("Unibase.Forms.Controls.Scan.Instance().data.filter(x => x." + filtercolumn + " == jsondata[i]." + filtercolumn + ").length");
  77. if (dataExist <= 0) {
  78. totalsum = totalsum + eval("jsondata[i]." + SumColumn);
  79. html += templateScript(jsondata[i]);
  80. Unibase.Forms.Controls.Scan.Instance().data.push(jsondata[i]);
  81. }
  82. else {
  83. $("#divErrors").append("<span style='color:red;'>" + text + "-" + filtercolumn + " already added" + "</span><br/>");
  84. $("#scan_" + prop.UniqueId).val('');
  85. return false;
  86. }
  87. }
  88. $("#lblSum_" + prop.UniqueId).text(totalsum);
  89. $("#divHtmlContainer").after(html);
  90. Unibase.Forms.Controls.Scan.Instance().callbackmethod(data, text, prop);
  91. }
  92. else {
  93. Unibase.Forms.Controls.Scan.Instance().callbackmethod(data, text, prop);
  94. }
  95. }
  96. });
  97. }
  98. else {
  99. Unibase.Forms.Controls.Scan.Instance().callbackmethod(data, text, prop);
  100. }
  101. }
  102. }
  103. callbackmethod(data, text, prop) {
  104. var Maxlength = data.MaxLength;
  105. var container = "#divHtmlContainer";
  106. var settingMethod = data.SettingMethod;
  107. if (settingMethod != null && settingMethod != "") {
  108. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile(data.JsUrl, function () {
  109. eval(settingMethod + "('" + text + "','" + container + "',Unibase.Forms.Controls.Scan.Instance().propobj,function(response){Unibase.Forms.Controls.Scan.Instance().data=response;});");
  110. });
  111. }
  112. $("#scan_" + prop.UniqueId).val('');
  113. }
  114. readScanner(capturedValue, uniqueId) {
  115. if (capturedValue != "" && capturedValue != null && capturedValue != undefined) {
  116. $("#scan_" + uniqueId).val(capturedValue).trigger("change");
  117. }
  118. }
  119. obj() {
  120. return Unibase.Forms.Controls.Scan.Instance().data;
  121. }
  122. scan(text) {
  123. $("#scan_" + Unibase.Forms.Controls.Scan.Instance().UniqueId).val(text);
  124. $("#scan_" + Unibase.Forms.Controls.Scan.Instance().UniqueId).trigger('keyup');
  125. }
  126. loadControl(containerid, prop) {
  127. var regExpr = "";
  128. var ErrMsg = "";
  129. var validationlist = prop.Validations;
  130. if (validationlist != null) {
  131. for (var i = 0; i < validationlist.length; i++) {
  132. regExpr += validationlist[i].RegularExp + '||';
  133. ErrMsg += validationlist[i].ErrorMessage + '||';
  134. }
  135. }
  136. var Isrequired = prop.IsRequired != true ? 'hidden' : '';
  137. var requiredClass = prop.IsRequired != true ? '' : 'required';
  138. var reqMark = prop.IsRequired != true ? '' : '*';
  139. var CurrentStageId = $("#hf_" + $("#hfLayout_InstalledPageId").val() + "_StageId").val();
  140. if (prop.IncludedStages != null && prop.IncludedStages != "") {
  141. var StagesForRequired = prop.IncludedStages.split('|');
  142. Isrequired = StagesForRequired.find(x => x == CurrentStageId) ? '' : 'hidden';
  143. requiredClass = StagesForRequired.find(x => x == CurrentStageId) ? 'required' : '';
  144. reqMark = StagesForRequired.find(x => x == CurrentStageId) ? '*' : '';
  145. }
  146. if (prop.ExcludedStages != null && prop.ExcludedStages != "") {
  147. var ExcludedStages = prop.ExcludedStages.split('|');
  148. Isrequired = ExcludedStages.find(x => x == CurrentStageId) ? 'hidden' : '';
  149. requiredClass = ExcludedStages.find(x => x == CurrentStageId) ? '' : 'required';
  150. reqMark = ExcludedStages.find(x => x == CurrentStageId) ? '' : '*';
  151. }
  152. let ControlId = 'scan_' + prop.UniqueId;
  153. if (prop.IsRequired)
  154. requiredClass = 'required';
  155. var scansetting = JSON.parse(prop.ControlJsonText);
  156. const { helpTooltipHtml, helpTextHtml } = Unibase.Platform.Forms.Components.FormViewer.Instance().getControlHelpHtml(prop);
  157. let html = '<div class="floating-label-form-group">' +
  158. '<label for="lbl" id="lbl_' + prop.ControlId + '">' + helpTooltipHtml + '<span class="label-name">' + prop.LabelName + '</span><span class="text-danger ' + Isrequired + '" id="spnIsRequired_' + prop.FormPropertyId + '"> *</span></label>' +
  159. '<div class="input-group">' +
  160. '<input type="hidden" class="value-control" value="Unibase.Forms.Controls.Scan.Instance().obj();" /><input type="text" id="' + ControlId + '" class="type-control form-control type-control value-control ' + requiredClass + ' floating-label-control scan_' + prop.DocPropertyName + ' scan_' + prop.FormPropertyName + '" placeholder="' + prop.LabelName + " " + reqMark + '" data-placeholder="' + prop.Placeholder + '" data-label="' + prop.LabelName + " " + reqMark + '" data-regularexp="' + regExpr + '" data-validatemsg="' + ErrMsg + '" MaxLength="' + scansetting.MaxLength + '" />' +
  161. '<a id = "crpnrd_btn_OpenScanner_' + prop.UniqueId + '" class="input-group-append"><span class="input-group-text" > <i class="fa fa-qrcode" > </i></span ></a>' +
  162. '<input type="hidden" id="hf_' + prop.ControlId + '" />' +
  163. '</div>' + helpTextHtml + '</div>';
  164. html = `<div class="card-body pa-0" id="scan_control">
  165. <div class="form-coupon row mx-10">
  166. <input type="hidden" class="value-control" value="Unibase.Forms.Controls.Scan.Instance().obj();" />
  167. <div class="col-sm-4 form-coupon-left pa-20" id="coupon_img">
  168. <div class="avatar">
  169. <span class="avatar-icon avatar-icon-inv-orange rounded-circle">
  170. <span class="initial-wrap"><span><i class="dripicons dripicons-ticket"></i></span></span>
  171. </span>
  172. </div>
  173. <br/> <span class="font-14 font-weight-500 text-dark" id="divDisplayText">You can apply multiple coupons</span><div class="d-flex align-items-center justify-content-center mt-5">
  174. <div>
  175. <h5 class="text-green"><span class="font-14 font-weight-500 mr-10 text-dark" id="divsumDisplayText"></span> <span class="spanpoints">&#8377; </span> <span id="lblSum_` + prop.UniqueId + `" class="lblSum">0</span></h5>
  176. </div>
  177. <div class="ml-10 font-weight-500">(<span id="lblCount_` + prop.UniqueId + `" class="lblCount">0</span>)</div></div>
  178. </div>
  179. <div class="col-sm-8 form-coupon-right pa-20 pa-sm-25 pt-0 pt-sm-20" id="div_scan">
  180. <div class="input-group">
  181. <input type="hidden" class="value-control" value="Unibase.Forms.Controls.Scan.Instance().obj();" /><input id="` + ControlId + `" class="form-control type-control value-control input-focus text-center ` + requiredClass + ` scan_` + prop.DocPropertyName + ` scan_` + prop.FormPropertyName + `" placeholder="` + prop.LabelName + ` ` + reqMark + `" data-placeholder="` + prop.Placeholder + `" data-label="` + prop.LabelName + ` ` + reqMark + `" data-regularexp="` + regExpr + `" data-validatemsg="` + ErrMsg + `" type="text" maxlength="` + scansetting.MaxLength + `" />
  182. <a href="#" id = "crpnrd_btn_OpenScanner_` + prop.UniqueId + `" class="input-group-append">
  183. <span class="input-group-text"><i class="fa fa-qrcode"></i></span>
  184. </a>
  185. </div>
  186. </div>
  187. </div> </div><input type="hidden" id="hf_` + prop.ControlId + `" />` +
  188. `<div class="row col-sm-12" id="divMainContainer"><div class="col-sm-6 pull-left " id="divErrors"></div><div class="col-sm-6 pull-right" id="divListContainer"><div class="" id="divHtmlContainer"></div></div></div>`;
  189. $("#" + containerid).append(html);
  190. var data = JSON.parse(prop.ControlJsonText);
  191. if (data.EnableCount == false) {
  192. $("#coupon_img").addClass('hidden');
  193. $("#divSum").addClass('hidden');
  194. $("#div_scan").addClass('col-sm-12');
  195. }
  196. }
  197. loadControlSettings(controlsettingjson, formpropertyid) {
  198. return null;
  199. }
  200. loadPropertySettings(propertysettings, formpropertyid) {
  201. if (propertysettings != null) {
  202. for (var i = 0; i < propertysettings.length; i++) {
  203. var data = propertysettings[i];
  204. if (data.ControlPropertyName == "MaxLength" && data.ControlPropertyValue != "") {
  205. $("#txt_" + formpropertyid).attr("MaxLength", data.ControlPropertyValue);
  206. }
  207. }
  208. }
  209. }
  210. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  211. $('#scan_' + formpropertyid).val('').trigger('change');
  212. }
  213. static Instance() {
  214. if (this.instance === undefined) {
  215. this.instance = new Scan();
  216. }
  217. return this.instance;
  218. }
  219. }
  220. Controls.Scan = Scan;
  221. })(Controls = Forms.Controls || (Forms.Controls = {}));
  222. })(Forms = Unibase.Forms || (Unibase.Forms = {}));
  223. })(Unibase || (Unibase = {}));