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.

rulebuilder.ruleprovider.js 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Unibase;
  11. (function (Unibase) {
  12. let Platform;
  13. (function (Platform) {
  14. let Automation;
  15. (function (Automation) {
  16. let Components;
  17. (function (Components) {
  18. class RuleProvider extends Platform.Core.BaseComponent {
  19. jsFiles() {
  20. var jsfiles = ["platform/automation/managers/rulemanager.js",
  21. "platform/datasources/managers/doctypemanager.js",
  22. "platform/automation/requests/ruleprovider.js",
  23. "platform/analytics/managers/reportmanager.js",
  24. "platform/forms/managers/formmanager.js",
  25. "platform/automation/components/rulebuilder/rulebuilder.ruleprovider.js",
  26. "platform/forms/components/formviewer/formviewer.js",
  27. "libs/parsley/parsley.min.js",
  28. "platform/apps/managers/appmanager.js"
  29. ];
  30. return jsfiles;
  31. }
  32. cssFiles() {
  33. return [];
  34. }
  35. html(id, containerid) {
  36. let html = `<form id="frmUnibase_RuleProvider" data-validate="parsley" data-isdynamic="false">
  37. <div id="Validate_RuleProvider" class="clear"></div>
  38. <div class="card bg-light">
  39. <div class="b-b bg-white card-header header">
  40. <strong class="text-dark title" id="Form_RuleProvider">Create RuleProvider</strong>
  41. </div>
  42. <div class="card-body scrollable" style="overflow-y: scroll;">
  43. <div class="bg-white card" id="divInstalledApp">
  44. <div id="unibase_ValidationSummary" class="clear"></div>
  45. <div class="card-body">
  46. <div class="row">
  47. <div class="col-sm-6">
  48. <div class="floating-label-form-group">
  49. <label for="txt_RuleProvider" id="lbl_RuleProvider">RuleProvider Name<span class="text-danger">*</span></label>
  50. <input type="text" id="txt_RuleProvider" class="form-control required value-control floating-label-control" data-isdynamic="false" placeholder="RuleProvider Name*" data-placeholder="Enter RuleProvider Name" data-label="RuleProvider Name*" />
  51. <input type="hidden" id="hf_RuleProvider" />
  52. <label for="Validation" id="lblValidation_RuleProvider"></label>
  53. </div>
  54. </div>
  55. <div class="col-sm-6">
  56. <div class="input-group">
  57. <label for="InstalledApp" class="font-bold">Installed App <span class="text-danger">*</span></label>
  58. <select id="txtAutocomplete_InstalledApp" class="form-control text-control required" style="width:100%;" placeholder="InstalledApp" data-placeholder="InstalledApp" data-label="" data-istagselect="true"></select>
  59. <input type="hidden" id="hf_Autocomplete_InstalledApp" class="form-control value-control" data-isdynamic="true" />
  60. </div>
  61. </div>
  62. </div>
  63. </div>
  64. </div>
  65. <div class="bg-white card" id="divRuleProviderDetails">
  66. <div class="card-header">RuleProvider Details</div>
  67. <div class="card-body">
  68. <div class="row">
  69. <div class="col-sm-5">
  70. <div class="input-group">
  71. <label for="Doctype" class="font-bold">Doctype <span class="text-danger">*</span></label>
  72. <select id="txtAutoComplete_Doctypes" class="form-control text-control required" style="width:100%;" placeholder="Doctype" data-placeholder="Doctype" data-label="" data-istagselect="true"></select>
  73. <input type="hidden" id="hf_Autocomplete_Doctypes" class="form-control value-control" data-isdynamic="true" />
  74. </div>
  75. </div>
  76. <div class="col-sm-5 hidden" id="DoctypeColumn">
  77. <div class="input-group">
  78. <label for="DoctypeColumn" class="font-bold">Doctype Column</label>
  79. <select id="txtAutoComplete_DoctypeColumn" class="form-control text-control" style="width:100%;" placeholder="DoctypeColumn" data-placeholder="DoctypeColumn" data-label="" data-istagselect="true"><option value="0">Select</option></select>
  80. <input type="hidden" id="hf_AutoComplete_DoctypeColumn" class="form-control value-control" data-isdynamic="true" />
  81. </div>
  82. </div>
  83. <button type="button" class="col-sm-2 btn btn-primary mt-30" onclick="Unibase.Platform.Automation.Components.RuleProvider.Instance().ToggleReports()">Map Report</button>
  84. </div>
  85. <div class="row hidden" id="ReportDetailDiv">
  86. <div class="col-sm-6">
  87. <div class="input-group">
  88. <label for="Report" class="font-bold">Report</label>
  89. <select id="txtAutoComplete_Report" class="form-control text-control" style="width:100%;" placeholder="Report" data-placeholder="Report" data-label="" data-istagselect="true"><option value="0">Select</option></select>
  90. <input type="hidden" id="hf_AutoComplete_Report" class="form-control value-control" data-isdynamic="true" />
  91. </div>
  92. </div>
  93. <div class="col-sm-6">
  94. <div class="input-group">
  95. <label for="ReportColumn" class="font-bold">Report Column</label>
  96. <select id="txtAutoComplete_ReportColumn" class="form-control text-control" style="width:100%;" placeholder="ReportColumn" data-placeholder="ReportColumn" data-label="" data-istagselect="true"><option value="0">Select</option></select>
  97. <input type="hidden" id="hf_AutoComplete_ReportColumn" class="form-control value-control" data-isdynamic="true" />
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. <div class="bg-white card-footer footer" id="CreateRuleProviderFooter">
  105. <button id="btnCloseRuleProvider" class="btn btn-secondary btn-sm mr-auto">Close</button>
  106. <button id="btnSaveRuleProvider" class="btn btn-primary btn-sm pull-right">Save</button>
  107. </div>
  108. </div>
  109. </form>`;
  110. return html;
  111. }
  112. load(id, containerid, callback) {
  113. if (id != "") {
  114. Unibase.Platform.Automation.Components.RuleProvider.Instance().EditRuleProvider(id);
  115. }
  116. $("#btnCloseRuleProvider").click(function () {
  117. $('#' + containerid).modal('hide');
  118. $('#' + containerid).remove();
  119. });
  120. $("#btnSaveRuleProvider").click(function () {
  121. let appcontrolid = "frmUnibase_RuleProvider";
  122. let result = Unibase.Platform.Forms.Components.FormViewer.Instance().requiredFieldValidation(appcontrolid);
  123. if (result == false) {
  124. MessageHelper.Instance().showError("Mandatory fields are missing", "Validate_RuleProvider");
  125. return false;
  126. }
  127. else {
  128. Unibase.Platform.Automation.Components.RuleProvider.Instance().SaveRuleProvider(id, containerid);
  129. }
  130. });
  131. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/installedappautocomplete';
  132. AutoCompleteHelper.getHelper().Create("#txtAutocomplete_InstalledApp", "#hf_Autocomplete_InstalledApp", url, function (response) {
  133. var data = response;
  134. });
  135. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reports';
  136. AutoCompleteHelper.getHelper().Create("#txtAutoComplete_Report", "#hf_AutoComplete_Report", url, function (response) {
  137. var data = response;
  138. });
  139. $("#txtAutocomplete_InstalledApp").change(function () {
  140. Unibase.Platform.Automation.Components.RuleProvider.Instance().OnChangeInstalledApp();
  141. });
  142. $("#txtAutoComplete_Report").change(function () {
  143. Unibase.Platform.Automation.Components.RuleProvider.Instance().OnChangeReport();
  144. });
  145. $("#txtAutoComplete_Doctypes").change(function () {
  146. Unibase.Platform.Automation.Components.RuleProvider.Instance().OnChangeDoctype();
  147. });
  148. }
  149. init(ruleproviderid, callback) {
  150. this.render(ruleproviderid, callback);
  151. }
  152. render(ruleproviderid, callback) {
  153. this.navigationHelper.popup(ruleproviderid, '', Unibase.Platform.Automation.Components.RuleProvider.Instance(), null, Platform.Helpers.Size.DockLeft);
  154. }
  155. loadRuleProviderForm(iscreate) {
  156. var Pk_Value = 0;
  157. if (!iscreate) {
  158. Pk_Value = Unibase.Themes.Providers.DetailHelper.recordId;
  159. }
  160. this.navigationHelper.popup(Pk_Value, '', Unibase.Platform.Automation.Components.RuleProvider.Instance(), null, Platform.Helpers.Size.DockLeft);
  161. }
  162. ToggleReports() {
  163. $("#ReportDetailDiv").removeClass("hidden");
  164. $("#DoctypeColumn").removeClass("hidden");
  165. }
  166. EditRuleProvider(id) {
  167. let ruleproviderid = Number(id);
  168. $("#Form_RuleProvider").text("Edit RuleProvider");
  169. Unibase.Platform.Automation.Managers.RuleManager.Instance().getRuleProvider(ruleproviderid).then(function (response) {
  170. $("#txt_RuleProvider").val(response.RuleProviderName);
  171. var installedappoption = new Option(response.AppTitle, response.InstalledAppId.toString(), true, true);
  172. $("#txtAutocomplete_InstalledApp").append(installedappoption);
  173. Unibase.Platform.Automation.Components.RuleProvider.Instance().OnChangeInstalledApp().then(function () {
  174. var doctypeoption = new Option(response.DoctypeName, response.DoctypeId.toString(), true, true);
  175. $("#txtAutoComplete_Doctypes").append(doctypeoption);
  176. Unibase.Platform.Automation.Components.RuleProvider.Instance().OnChangeDoctype().then(function () {
  177. var doctypecolumnoption = new Option(response.DocPropertyName, response.DocPropertyId.toString(), true, true);
  178. $("#txtAutoComplete_DoctypeColumn").append(doctypecolumnoption);
  179. });
  180. });
  181. if (response.ReportId != 0) {
  182. $("#ReportDetailDiv").removeClass("hidden");
  183. $("#DoctypeColumn").removeClass("hidden");
  184. var reportoption = new Option(response.ReportName, response.ReportId.toString(), true, true);
  185. $("#txtAutoComplete_Report").append(reportoption);
  186. Unibase.Platform.Automation.Components.RuleProvider.Instance().OnChangeReport().then(function () {
  187. var reportcolumnoption = new Option(response.ReportColumnName, response.ReportColumnId.toString(), true, true);
  188. $("#txtAutoComplete_ReportColumn").append(reportcolumnoption);
  189. });
  190. }
  191. eval('_floatingLabelHelper.init();');
  192. });
  193. }
  194. OnChangeInstalledApp() {
  195. return __awaiter(this, void 0, void 0, function* () {
  196. $("#txtAutoComplete_Doctypes").val(0);
  197. if (Number($("#txtAutocomplete_InstalledApp option:selected").val() != 0)) {
  198. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/doctypes/appdoctypesautocomplete/installedappid/' + Number($("#txtAutocomplete_InstalledApp option:selected").val());
  199. return yield AutoCompleteHelper.getHelper().Create("#txtAutoComplete_Doctypes", "#hf_Autocomplete_Doctypes", url, function (response) {
  200. var data = response;
  201. });
  202. }
  203. });
  204. }
  205. OnChangeDoctype() {
  206. return __awaiter(this, void 0, void 0, function* () {
  207. $("#txtAutoComplete_DoctypeColumn").val(0);
  208. if (Number($("#txtAutoComplete_Doctypes option:selected").val() != 0)) {
  209. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/doctypes/docpropertiesautocomplete/doctypeid/' + Number($("#txtAutoComplete_Doctypes option:selected").val());
  210. return yield AutoCompleteHelper.getHelper().Create("#txtAutoComplete_DoctypeColumn", "#hf_AutoComplete_DoctypeColumn", url, function (response) {
  211. var data = response;
  212. });
  213. }
  214. });
  215. }
  216. OnChangeReport() {
  217. return __awaiter(this, void 0, void 0, function* () {
  218. $("#txtAutoComplete_ReportColumn").val(0);
  219. if (Number($("#txtAutoComplete_Report option:selected").val() != 0)) {
  220. var reportcolumnurl = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reportcolumnsautocomplete/reportid/' + Number($("#txtAutoComplete_Report option:selected").val());
  221. return yield AutoCompleteHelper.getHelper().Create("#txtAutoComplete_ReportColumn", "#hf_AutoComplete_ReportColumn", reportcolumnurl, function (response) {
  222. var data = response;
  223. });
  224. }
  225. });
  226. }
  227. SaveRuleProvider(id, containerid) {
  228. let model = new Unibase.Platform.Automation.Requests.RuleProvider();
  229. model.RuleProviderId = Number(id);
  230. model.RuleProviderName = $("#txt_RuleProvider").val().toString();
  231. model.InstalledAppId = Number($("#txtAutocomplete_InstalledApp option:selected").val());
  232. model.DoctypeId = Number($("#txtAutoComplete_Doctypes option:selected").val());
  233. model.DocPropertyId = Number($("#txtAutoComplete_DoctypeColumn option:selected").val());
  234. model.ReportId = Number($("#txtAutoComplete_Report option:selected").val());
  235. model.ReportColumnId = Number($("#txtAutoComplete_ReportColumn option:selected").val());
  236. Automation.Managers.RuleManager.Instance().saveRuleProvider(model).then(function (response) {
  237. if (response.status == Unibase.Data.Status.Error) {
  238. MessageHelper.Instance().showError(response.message, "Validate_RuleProvider");
  239. }
  240. else {
  241. MessageHelper.Instance().showSuccess(response.message, "Validate_RuleProvider");
  242. $('#' + containerid).modal('hide');
  243. $('#' + containerid).remove();
  244. Unibase.Platform.Helpers.NavigationHelper.Instance().loadList(Unibase.Platform.Automation.Components.RuleProvider.installedappid, null);
  245. }
  246. });
  247. }
  248. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  249. RuleProvider.Instance().init(Pk_Value, null);
  250. Unibase.Platform.Apps.Managers.AppManager.Instance().getAppConfiguration(AppConfigurationId).then(function (response) {
  251. Unibase.Platform.Automation.Components.RuleProvider.installedappid = response.result.InstalledAppId;
  252. });
  253. }
  254. exportsRuleProviders() {
  255. var instance = this;
  256. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("platform/automation/managers/rulemanager.js", function () {
  257. Unibase.Platform.Automation.Managers.RuleManager.Instance().exportRuleProiders().then(function (response) {
  258. var filename = "RuleProiders.xml";
  259. var xmltext = response.result;
  260. var pom = document.createElement('a');
  261. var bb = new Blob([xmltext], { type: 'text/plain' });
  262. pom.setAttribute('href', window.URL.createObjectURL(bb));
  263. pom.setAttribute('download', filename);
  264. pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
  265. pom.draggable = true;
  266. pom.classList.add('dragout');
  267. pom.click();
  268. });
  269. });
  270. }
  271. exportsSingleRuleProvider() {
  272. var ruleproviderid = 0;
  273. var instance = this;
  274. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length > 0) {
  275. for (let obj of Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters) {
  276. if (obj.Key === "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_recordid") {
  277. ruleproviderid = Number(obj.Value);
  278. }
  279. }
  280. }
  281. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("platform/automation/managers/rulemanager.js", function () {
  282. Unibase.Platform.Automation.Managers.RuleManager.Instance().exportSingleRuleProiders(ruleproviderid).then(function (response) {
  283. var filename = "RuleProiders.xml";
  284. var xmltext = response.result;
  285. var pom = document.createElement('a');
  286. var bb = new Blob([xmltext], { type: 'text/plain' });
  287. pom.setAttribute('href', window.URL.createObjectURL(bb));
  288. pom.setAttribute('download', filename);
  289. pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
  290. pom.draggable = true;
  291. pom.classList.add('dragout');
  292. pom.click();
  293. });
  294. });
  295. }
  296. static Instance() {
  297. if (this.instance === undefined) {
  298. this.instance = new RuleProvider();
  299. }
  300. return this.instance;
  301. }
  302. }
  303. Components.RuleProvider = RuleProvider;
  304. })(Components = Automation.Components || (Automation.Components = {}));
  305. })(Automation = Platform.Automation || (Platform.Automation = {}));
  306. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  307. })(Unibase || (Unibase = {}));