Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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