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.

notificationbuilder.js 29KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. /// <reference path="../../platform/automation/managers/rulemanager.ts" />
  2. /// <reference path="../../platform/automation/enums/automationmode.ts" />
  3. /// <reference path="../../platform/core/helpers/messages/messagehelper.ts" />
  4. var elements =
  5. {
  6. SMS:
  7. {
  8. icon: "libs/flowy/assets/sms.svg",
  9. name: "SMS",
  10. color: "#eaeced",
  11. iconcolor: "#66636a"
  12. },
  13. TASK:
  14. {
  15. icon: "libs/flowy/assets/task.svg",
  16. name: "TASK",
  17. color: "#eaeced",
  18. iconcolor: "#e7d93d"
  19. },
  20. NOTIFICATION:
  21. {
  22. icon: "libs/flowy/assets/bell.svg",
  23. name: "NOTIFICATION",
  24. color: "#eaeced",
  25. iconcolor: "#f38d08"
  26. },
  27. EXECUTEQUERY:
  28. {
  29. icon: "libs/flowy/assets/database.svg",
  30. name: "EXECUTEQUERY",
  31. color: "#eaeced",
  32. iconcolor: "#4da782"
  33. },
  34. MAIL:
  35. {
  36. icon: "libs/flowy/assets/email.svg",
  37. name: "MAIL",
  38. color: "#eaeced",
  39. iconcolor: "#ff35a2"
  40. },
  41. APIINTEGRATOR:
  42. {
  43. icon: "libs/flowy/assets/database.svg",
  44. name: "APIINTEGRATOR",
  45. color: "#eaeced",
  46. iconcolor: "#c96e3f"
  47. },
  48. STAGECHANGE:
  49. {
  50. icon: "libs/flowy/assets/stage.svg",
  51. name: "STAGECHANGE",
  52. color: "#eaeced",
  53. iconcolor: "#60afb7"
  54. },
  55. SCHEDULAR:
  56. {
  57. icon: "libs/flowy/assets/time.svg",
  58. name: "SCHEDULAR",
  59. color: "#eaeced",
  60. iconcolor: "#9a6aab"
  61. },
  62. EVENT:
  63. {
  64. icon: "libs/flowy/assets/icon.png",
  65. name: "EVENT",
  66. color: "#959595",
  67. iconcolor: ""
  68. },
  69. WHATSAPP:
  70. {
  71. icon: "libs/flowy/assets/whatsapp.svg",
  72. name: "WHATSAPP",
  73. color: "#eaeced",
  74. iconcolor: "#1fa581"
  75. },
  76. }
  77. var containerid;
  78. var actions = [];
  79. var Ruleproviderid = 0;
  80. var smsblock;
  81. var emailblock;
  82. var notificationblock;
  83. var taskblock;
  84. var stagechangeblock;
  85. var etemplateblock;
  86. var whatsappblock;
  87. var eventblock;
  88. var apiblock;
  89. var disabledClick;
  90. var removefunction;
  91. var execuetqueryblock;
  92. var RuleId = 0;
  93. var importdata = '';
  94. var ispopupopened = false;
  95. var datainfo = [];
  96. var isdelete = false;
  97. var isplusbtn = false;
  98. var installedappid = 0;
  99. var rpid = 0;
  100. var rulename = "";
  101. var containerid;
  102. var _IsChildAction = false;
  103. var bizgaze_automation_flow_main = {
  104. //group id
  105. saveruleblock: function (id, name, ruleproviderid) {
  106. RuleId = Number(id);
  107. $('.rule_dataul').attr("id", RuleId).attr("alt", name);
  108. ispopupopened = false;
  109. //after saving disable all input fields
  110. $('#installedapp_dropdown').attr("disabled", "true");
  111. $('#ddl_RuleProvider').attr("disabled", "true");
  112. $("#txt_Rule").attr("disabled", "true");
  113. },
  114. saveeventblock: function (id, name) {
  115. if (Number(eventblock.id) == 0) {
  116. eventblock.id = id;
  117. $(eventblock).children().children().children('.action_data').append('<center>' + name + '</center>');
  118. $(eventblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name)
  119. }
  120. if (!$(eventblock).children().children().children('.event_name').hasClass('event_name'))
  121. {
  122. $(eventblock).children().children('.card_menu_wrapper').append('<input type="hidden" class="event_name">')
  123. }
  124. ispopupopened = false;
  125. },
  126. saveeventname(eventname) {
  127. $('.event_name').val(eventname)
  128. },
  129. savesmsblock: function (id, name) {
  130. smsblock.id = id;
  131. $(smsblock).children().children().children().children('.action_data').append(name);
  132. $(smsblock).children().children('.deleteicon').children('.deleteblock').addClass('d-none');
  133. $(smsblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name);
  134. ispopupopened = false;
  135. },
  136. savenotificationblock: function (id, name) {
  137. notificationblock.id = id;
  138. $(notificationblock).children().children().children().children('.action_data').append(name);
  139. $(notificationblock).children().children('.deleteicon').children('.deleteblock').addClass('d-none');
  140. ispopupopened = false;
  141. $(notificationblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name);
  142. },
  143. savewhatsappblock: function (id, name) {
  144. whatsappblock.id = id;
  145. $(whatsappblock).children().children().children().children('.action_data').append(name);
  146. $(whatsappblock).children().children('.deleteicon').children('.deleteblock').addClass('d-none');
  147. ispopupopened = false;
  148. $(whatsappblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name);
  149. },
  150. savetaskblock: function (id, name) {
  151. taskblock.id = id;
  152. ispopupopened = false;
  153. $(taskblock).children().children().children().children('.action_data').append(name);
  154. $(taskblock).children().children('.deleteicon').children('.deleteblock').addClass('d-none');
  155. $(taskblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name);
  156. },
  157. saveemailblock: function (id, name) {
  158. emailblock.id = id;
  159. ispopupopened = false;
  160. $(emailblock).children().children().children().children('.action_data').append(name);
  161. $(emailblock).children().children('.deleteicon').children('.deleteblock').addClass('d-none');
  162. $(emailblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name);
  163. },
  164. savestagechangeblock: function (id, name) {
  165. stagechangeblock.id = id;
  166. ispopupopened = false;
  167. $(stagechangeblock).children().children().children().children('.action_data').append(name);
  168. $(stagechangeblock).children().children('.deleteicon').children('.deleteblock').addClass('d-none');
  169. $(stagechangeblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name);
  170. },
  171. saveApiIntegratorblock: function (id, name) {
  172. apiblock.id = id;
  173. ispopupopened = false;
  174. $(apiblock).children().children().children().children('.action_data').append(name);
  175. $(apiblock).children().children('.deleteicon').children('.deleteblock').addClass('d-none');
  176. $(apiblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name);
  177. },
  178. saveExecuteQueryblock: function (id, name) {
  179. execuetqueryblock.id = id;
  180. ispopupopened = false;
  181. $(execuetqueryblock).children().children().children().children('.action_data').append(name);
  182. $(execuetqueryblock).children().children('.deleteicon').children('.deleteblock').addClass('d-none');
  183. $(execuetqueryblock).parent().closest('.box').parent().children('.parent-list').attr("id", id).attr("alt", name);
  184. },
  185. getruleid: function () {
  186. return RuleId;
  187. },
  188. import: function (data) {
  189. importdata = data.html;
  190. datainfo = data.data;
  191. },
  192. output: function () {
  193. eval("closemenu()");
  194. var datainfo = [];
  195. $('.parent-list').each(function () {
  196. if (Number($(this).attr("id")) != 0) {
  197. var info = {
  198. Name: $(this).attr("alt"),
  199. Id: Number($(this).attr("id")),
  200. Action: $(this).attr("data-name")
  201. }
  202. datainfo.push(info);
  203. }
  204. });
  205. var output = {
  206. data: datainfo, html: $('.treebody').html()
  207. }
  208. return output;
  209. },
  210. getruleid: function () {
  211. return RuleId;
  212. },
  213. getruleproviderid: function () {
  214. return Ruleproviderid;
  215. },
  216. getpopupclosed: function () {
  217. ispopupopened = false;
  218. },
  219. appendruleid: function (id) {
  220. RuleId = Number(id);
  221. },
  222. getcloseadvmode: function () {
  223. importdata = '';
  224. datainfo = [];
  225. RuleId = 0;
  226. },
  227. appendruleproviderid: function (id) {
  228. Ruleproviderid = Number(id);
  229. },
  230. getcontainerid: function (containerdata) {
  231. containerid = containerdata;
  232. },
  233. IsChildAction() {
  234. return _IsChildAction;
  235. }
  236. }
  237. // actions
  238. function load() {
  239. Unibase.Platform.Automation.Managers.RuleManager.Instance().getActions().then(function (response) {
  240. for (var i = 0; i <= response.length - 1; i++) {
  241. actions.push(response[i]);
  242. }
  243. });
  244. //previous data
  245. if (datainfo.length > 0) {
  246. //rule
  247. var info = datainfo.find(x => x.Action == "RULE");
  248. $("#txt_Rule").val(info.Name);
  249. //rule provider
  250. Unibase.Platform.Automation.Managers.RuleManager.Instance().getRuleProvider(Ruleproviderid).then(function (response) {
  251. if (response != null) {
  252. $('#installedapp_dropdown').html('');
  253. $('#installedapp_dropdown').html('<option value=' + response.InstalledAppId + ' selected>' + response.AppTitle + '</option>');
  254. $('#ddl_RuleProvider').html('');
  255. $('#ddl_RuleProvider').html('<option value=' + response.RuleProviderId + ' selected>' + response.RuleProviderName + '</option>');
  256. Unibase.Platform.Automation.Components.Rule.Instance().RuleInstalledAppId = Number(response.InstalledAppId);
  257. }
  258. });
  259. //disable all input fields
  260. $('#installedapp_dropdown').attr("disabled", "true");
  261. $('#ddl_RuleProvider').attr("disabled", "true");
  262. $("#txt_Rule").attr("disabled", "true");
  263. }
  264. //import data
  265. var html = importdata;
  266. if (html == '') {
  267. html = `<ul class="active d-flex" id="firstblock">
  268. <li class="element" style="z-index:0">
  269. <div class="box rootbox d-flex justify-content-center align-items-end" id="rootbox">
  270. <div class="boxcontent">
  271. <button class="btnStart">Start</button>
  272. </div>
  273. <div class="firstplus" id="startplusbtn" onclick="openmenu(this)">&#43;</div>
  274. <div class="boxlinedown"></div>
  275. <div class="sideline startSlideLine d-none"></div>
  276. <div class="sidemenu startmenuClass d-none" id="startmenu"></div></div>
  277. <ul data-name="RULE" class="active startedTree d-flex parent-list rule_dataul" id="0"></ul>
  278. </li>
  279. </ul>`;
  280. }
  281. $('.treebody').append(html);
  282. }
  283. function deleteblock(type) {
  284. isdelete = true;
  285. $(type).parent().closest('.box').parent().remove();
  286. if (ispopupopened) {
  287. ispopupopened = false;
  288. $('#' + containerid).modal('hide');
  289. $('#' + containerid).remove();
  290. }
  291. }
  292. function parentid(type) {
  293. var parentname = $(type).parent().closest('.box').parent().children('.parent-list').parent().parent().attr('data-name');
  294. var parentid = 0;
  295. if (parentname != "EVENT") {
  296. parentid = Number($(type).parent().closest('.box').parent().children('.parent-list').parent().parent().attr("id"));
  297. }
  298. return parentid;
  299. }
  300. //side menu
  301. function openmenu(e) {
  302. $('input[name="startbtnmenu"]').prop("checked", false);
  303. rpid = Number($('#ddl_RuleProvider option:selected').val());
  304. rulename = $('#txt_Rule').val();
  305. var parentname = $(e).parent().closest('.box').parent().children('.parent-list').attr('data-name');
  306. var data = [];
  307. isplusbtn = true;
  308. if ($(e).parent().find('.sideline').hasClass('d-none') && $(e).parent().find('.sidemenu').hasClass('d-none')) {
  309. $('.sidemenu').each(function () {
  310. if (!$(this).hasClass('d-none')) {
  311. $(this).addClass('d-none');
  312. }
  313. });
  314. $('.sideline').each(function () {
  315. if (!$(this).hasClass('d-none')) {
  316. $(this).addClass('d-none');
  317. }
  318. });
  319. $(e).parent().find('.sideline').removeClass('d-none');
  320. $(e).parent().find('.sidemenu').removeClass('d-none');
  321. }
  322. else {
  323. $(e).parent().find('.sideline').addClass('d-none');
  324. $(e).parent().find('.sidemenu').addClass('d-none');
  325. }
  326. if (rulename == "" || rpid == 0) {
  327. $(e).parent().find('.sidemenu').html(Errorhtml("Rule Fields Are Missing"));
  328. }
  329. else if (Number($(e).parent().parent().children('.parent-list').attr("id")) == 0 && parentname != "RULE") {
  330. $(e).parent().find('.sidemenu').html(Errorhtml("Please Save Parent"));
  331. }
  332. else if ($(e).parent().find('.sidemenu').hasClass('dataadded') != true) {
  333. $(e).parent().find('.sidemenu').addClass('dataadded');
  334. if (parentname != "RULE") {
  335. data = ["SMS", "NOTIFICATION", "MAIL", "EXECUTEQUERY", "STAGECHANGE", "APIINTEGRATOR", "TASK","WHATSAPP"];
  336. }
  337. else {
  338. data = ["EVENT"];
  339. }
  340. $(e).parent().find('.sidemenu').html(menubarfunction(data));
  341. }
  342. }
  343. function closemenu() {
  344. if (!isplusbtn) {
  345. $('.sidemenu').each(function () {
  346. if (!$(this).hasClass('d-none')) {
  347. $(this).addClass('d-none');
  348. }
  349. });
  350. $('.sideline').each(function () {
  351. if (!$(this).hasClass('d-none')) {
  352. $(this).addClass('d-none');
  353. }
  354. });
  355. }
  356. else {
  357. isplusbtn = false;
  358. }
  359. }
  360. function Errorhtml(message) {
  361. var html =
  362. `<div class="d-flex flex-column error_menu" style="gap:0.3rem"><div class="option_Error w-100 px-2 d-flex justify-content-start align-items-center">
  363. <i class="fa fa-exclamation-circle" style="color:red;font-size:12px"></i>
  364. <label class="ml-1 mt-1 error_message" for="event_startbtnmenu">${message}</label>
  365. </div></div>`;
  366. return html;
  367. }
  368. function ruleproviders() {
  369. var installedappid = Number($('#installedapp_dropdown option:selected').val());
  370. Unibase.Platform.Automation.Components.Rule.Instance().RuleInstalledAppId = installedappid;
  371. Unibase.Platform.Automation.Managers.RuleManager.Instance().loadRuleProviders(installedappid).then(function (response) {
  372. var html = "";
  373. if (response.length > 0) {
  374. for (let i = 0; i < response.length; i++) {
  375. html += '<option value=' + response[i].RuleProviderId + '>' + response[i].RuleProviderName + '</option>';
  376. }
  377. $('#ddl_RuleProvider').append(html);
  378. }
  379. });
  380. }
  381. function ruleprovideridinfo() {
  382. Ruleproviderid = Number($('#ddl_RuleProvider option:selected').val());
  383. }
  384. //card design
  385. function getcarddesign(event) {
  386. var html = "";
  387. if (event.name != "EVENT") {
  388. return `<div class="boxcontent parnet">
  389. <div class="cardTree diffcard" id="0" onclick="popup(this)">
  390. <input type="hidden" class="action_name" value="${event.name}">
  391. <div class="d-flex flex-column justify-content-between h-100" style="background-color:${elements[event.name].color}">
  392. <div class="align-items-center card_menu_wrapper d-flex justify-content-center justify-content-end p-3" style="background-color:${elements[event.name].iconcolor}" >
  393. <img src="${elements[event.name].icon}" style="color:white;font-size:20px;height:20px;width:20px;margin-top:2px"></i>
  394. </div>
  395. <div class="d-flex justify-content-center flex-column w-60">
  396. <center><div style="color:${elements[event.name].iconcolor}"><center><b class="mr-10">${event.name}</b></center></div></center>
  397. <center><div class="action_data text-truncate w-50 mr-10"></div></center>
  398. </div>
  399. <div class="deleteicon p-2" data-delete="${event.name}">
  400. <i class="fa fa-trash deleteblock" onclick="deleteblock(this)"></i>
  401. </div>
  402. </div>
  403. <div class="sideline d-none"></div>
  404. <div class="sidemenu d-none"></div>
  405. </div>
  406. </div>`;
  407. }
  408. else {
  409. return `<div class="boxcontent eventbox">
  410. <div class="cardTree" id="0" onclick="popup(this)">
  411. <input type="hidden" class="action_name" value="${event.name}">
  412. <div class="d-flex flex-column py-4 px-3 h-100 justify-content-between ">
  413. <div class=" d-flex justify-content-end card_menu_wrapper px-2 align-items-end">
  414. <img src="${elements[event.name].icon}" alt="${event.name}">
  415. <input type="hidden" class="event_name">
  416. </div>
  417. <div class="d-flex justify-content-center flex-column">
  418. <div><center><b>EVENT</b></center></div>
  419. <div class="action_data"></div>
  420. </div>
  421. <div class="deleteicon">
  422. <i class="fa fa-trash deleteblock_event d-none pull-right" onclick="deleteblock(this)" style="position:relative;top:-25px;left:15px;font-size:12px"></i>
  423. </div>
  424. </div>
  425. <div class="sideline d-none"></div>
  426. <div class="sidemenu d-none"></div></div></div>`;
  427. }
  428. }
  429. //popup image
  430. function popup(type) {
  431. var name = $(type).children('.action_name').val();
  432. if (!ispopupopened && !isdelete) {
  433. ispopupopened = true;
  434. if ($(type).parent().closest('.box').parent().hasClass('firstelement')) {
  435. $(type).parent().closest('.box').parent().removeClass('firstelement');
  436. }
  437. var _fileCacheHelper = Unibase.Platform.Helpers.FileCacheHelper.Instance();
  438. var id = 0;
  439. switch (name) {
  440. case "SMS":
  441. _fileCacheHelper.loadJsFile("platform/automation/components/actions/actions.sms.js", function () {
  442. let smsid = Number($(type).attr("id"));
  443. smsblock = $(type).get(0)
  444. var sms = new Unibase.Platform.Automation.Components.SendSms();
  445. sms.RuleProviderId = Ruleproviderid
  446. sms.ActionId = actions.filter(X => X.ActionName == "Send Sms")[0].ActionId;
  447. sms.ParentActionId = parentid(type);
  448. _IsChildAction = sms.ParentActionId == 0 ? false : true;
  449. sms.RuleActionData = [];
  450. sms.AutomationMode = Unibase.Platform.Automation.Enums.AutomationMode.AdvancedMode;
  451. sms.IsAutomationMode = true;
  452. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(smsid, '', sms, function () {
  453. }, Unibase.Platform.Helpers.Size.Auto);
  454. });
  455. break;
  456. case "NOTIFICATION":
  457. _fileCacheHelper.loadJsFile("platform/automation/components/actions/actions.notification.js", function () {
  458. let notificationid = Number($(type).attr("id"));
  459. notificationblock = $(type).get(0);
  460. var notification = new Unibase.Platform.Automation.Components.SendNotification();
  461. notification.RuleProviderId = Ruleproviderid
  462. notification.ParentActionId = parentid(type);
  463. _IsChildAction = notification.ParentActionId == 0 ? false : true;
  464. notification.ActionId = actions.filter(X => X.ActionName == "Send Notification")[0].ActionId;
  465. notification.RuleActionData = [];
  466. notification.AutomationMode = Unibase.Platform.Automation.Enums.AutomationMode.AdvancedMode;
  467. notification.IsAutomationMode = true;
  468. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(notificationid, '', notification, function () {
  469. }, Unibase.Platform.Helpers.Size.Auto);
  470. });
  471. break;
  472. case "EXECUTEQUERY":
  473. _fileCacheHelper.loadJsFile("platform/automation/components/actions/actions.executequery.js", function () {
  474. let executequeryid = Number($(type).attr("id"));
  475. execuetqueryblock = $(type).get(0);
  476. var ExecuteQuery = new Unibase.Platform.Automation.Components.ExecuteQuery();
  477. ExecuteQuery.RuleProviderId = Ruleproviderid
  478. ExecuteQuery.ActionId = actions.filter(X => X.ActionName == "Execute Query")[0].ActionId;
  479. ExecuteQuery.ParentActionId = parentid(type);;
  480. _IsChildAction = ExecuteQuery.ParentActionId == 0 ? false : true;
  481. ExecuteQuery.RuleActionData = [];
  482. ExecuteQuery.AutomationMode = Unibase.Platform.Automation.Enums.AutomationMode.AdvancedMode;
  483. ExecuteQuery.IsAutomationMode = true;
  484. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(executequeryid, '', ExecuteQuery, function () {
  485. }, Unibase.Platform.Helpers.Size.Auto);
  486. });
  487. break;
  488. case "MAIL":
  489. _fileCacheHelper.loadJsFile("platform/automation/components/actions/actions.email.js", function () {
  490. let emailid = Number($(type).attr("id"));
  491. emailblock = $(type).get(0);
  492. var email = new Unibase.Platform.Automation.Components.SendEmail();
  493. email.RuleProviderId = Ruleproviderid
  494. email.ActionId = actions.filter(X => X.ActionName == "Send Email")[0].ActionId;
  495. email.ParentActionId = parentid(type);;
  496. _IsChildAction = email.ParentActionId == 0 ? false : true;
  497. email.RuleActionData = [];
  498. email.AutomationMode = Unibase.Platform.Automation.Enums.AutomationMode.AdvancedMode;
  499. email.IsAutomationMode = true;
  500. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(emailid, '', email, function () {
  501. }, Unibase.Platform.Helpers.Size.Auto);
  502. });
  503. break;
  504. case "TASK":
  505. _fileCacheHelper.loadJsFile("platform/automation/components/actions/actions.task.js", function () {
  506. let taskid = Number($(type).attr("id"));
  507. taskblock = $(type).get(0);
  508. var task = new Unibase.Platform.Automation.Components.SendTask();
  509. task.RuleProviderId = Ruleproviderid
  510. task.ActionId = actions.filter(X => X.ActionName == "Send Task")[0].ActionId;
  511. task.ParentActionId = parentid(type);;
  512. _IsChildAction = task.ParentActionId == 0 ? false : true;
  513. task.RuleActionData = [];
  514. task.AutomationMode = Unibase.Platform.Automation.Enums.AutomationMode.AdvancedMode;
  515. task.IsAutomationMode = true;
  516. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(taskid, '', task, function () {
  517. }, Unibase.Platform.Helpers.Size.Auto);
  518. });
  519. break;
  520. case "WHATSAPP":
  521. _fileCacheHelper.loadJsFile("platform/automation/components/actions/actions.whatsapp.js", function () {
  522. let whatsappid = Number($(type).attr("id"));
  523. whatsappblock = $(type).get(0);
  524. var whatsapp = new Unibase.Platform.Automation.Components.SendWhatsApp();
  525. whatsapp.RuleProviderId = Ruleproviderid
  526. whatsapp.ActionId = actions.filter(X => X.ActionName == "Send WhatsApp")[0].ActionId;
  527. whatsapp.ParentActionId = parentid(type);;
  528. _IsChildAction = whatsapp.ParentActionId == 0 ? false : true;
  529. whatsapp.RuleActionData = [];
  530. whatsapp.AutomationMode = Unibase.Platform.Automation.Enums.AutomationMode.AdvancedMode;
  531. whatsapp.IsAutomationMode = true;
  532. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(whatsappid, '', whatsapp, function () {
  533. }, Unibase.Platform.Helpers.Size.Auto);
  534. });
  535. break;
  536. case "APIINTEGRATOR":
  537. _fileCacheHelper.loadJsFile("platform/automation/components/actions/actions.apiintegrator.js", function () {
  538. let apiintegratorid = Number($(type).attr("id"));
  539. apiblock = $(type).get(0);
  540. var ApiIntegrator = new Unibase.Platform.Automation.Components.ApiIntegrator();
  541. ApiIntegrator.RuleProviderId = Ruleproviderid
  542. ApiIntegrator.ActionId = actions.filter(X => X.ActionName == "Api Integration")[0].ActionId;
  543. ApiIntegrator.ParentActionId = parentid(type);;
  544. _IsChildAction = ApiIntegrator.ParentActionId == 0 ? false : true;
  545. ApiIntegrator.RuleActionData = [];
  546. ApiIntegrator.AutomationMode = Unibase.Platform.Automation.Enums.AutomationMode.AdvancedMode;
  547. ApiIntegrator.IsAutomationMode = true;
  548. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(apiintegratorid, '', ApiIntegrator, function () {
  549. }, Unibase.Platform.Helpers.Size.Auto);
  550. });
  551. break;
  552. case "STAGECHANGE":
  553. _fileCacheHelper.loadJsFile("platform/automation/components/actions/actions.stagechange.js", function () {
  554. let stagechangeid = Number($(type).attr("id"));
  555. stagechangeblock = $(type).get(0);
  556. var stagechange = new Unibase.Platform.Automation.Components.StageChange();
  557. stagechange.RuleProviderId = Ruleproviderid
  558. stagechange.ActionId = actions.filter(X => X.ActionName == "Stage Change")[0].ActionId;
  559. stagechange.ParentActionId = parentid(type);;
  560. stagechange.RuleActionData = [];
  561. stagechange.AutomationMode = Unibase.Platform.Automation.Enums.AutomationMode.AdvancedMode;
  562. stagechange.IsAutomationMode = true;
  563. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(stagechangeid, '', stagechange, function () {
  564. }, Unibase.Platform.Helpers.Size.Auto);
  565. });
  566. break;
  567. case "SCHEDULAR":
  568. //not assigning id after saving
  569. _fileCacheHelper.loadJsFile("platform/automation/components/templatenotes.js", function () {
  570. let etemplateid = Number($(type).attr("id"));
  571. etemplateblock = $(type).get(0);
  572. var eventtemplate = new Unibase.Platform.Automation.Components.EventTemplate();
  573. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(etemplateid, '', eventtemplate, function () {
  574. }, Unibase.Platform.Helpers.Size.Auto);
  575. });
  576. break;
  577. case "EVENT":
  578. _fileCacheHelper.loadJsFile("platform/automation/components/rulebuilder/rulebuilder.event.js", function () {
  579. let eventid = Number($(type).attr("id"));
  580. eventblock = $(type).get(0);
  581. var ruleevent = new Unibase.Platform.Automation.Components.RuleEvent();
  582. ruleevent.RuleProviderId = Ruleproviderid;
  583. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(eventid, '', ruleevent, function () {
  584. }, Unibase.Platform.Helpers.Size.Auto);
  585. });
  586. break;
  587. }
  588. }
  589. else {
  590. isdelete = false;
  591. }
  592. }
  593. //line design
  594. function getlinedesign(data) {
  595. isdelete = false;
  596. $(data).parent().parent().parent().find('.sideline').addClass('d-none');
  597. $(data).parent().parent().parent().find('.sidemenu').addClass('d-none');
  598. var elementdata = elements[$(data).children('.block_action').val()];
  599. var carddesign = getcarddesign(elementdata);
  600. var html = `<li class="element firstelement">
  601. <div class="box d-flex justify-content-center align-items-end">
  602. ${carddesign}
  603. <div class="plusbtn" onclick="openmenu(this)">+</div>
  604. <div class="boxlinedown"></div>
  605. </div>
  606. <ul class="d-flex ${elementdata.name} parent-list justify-content-center align-content-center" id="0" data-name="${elementdata.name}">
  607. </ul>
  608. </li>`;
  609. $(data).parent().closest('.box').parent().children('.parent-list').append(html);
  610. var type = $(data).parent().closest('.box').parent().children('.parent-list').children('.firstelement').children('.box').children('.boxcontent').children('.cardTree').get(0);
  611. popup(type);
  612. }
  613. //hidden menu
  614. function menubarfunction(data) {
  615. var innerhtml = '';
  616. for (let i = 0; i < data.length; i++) {
  617. innerhtml += `
  618. <div class="option_${data[i]} w-100 px-2 d-flex justify-content-start align-items-center" onclick="getlinedesign(this)">
  619. <input class="mr-1 block_action" type ="radio" name="startbtnmenu" value=${data[i]}>
  620. <label class="m-0" for="event_startbtnmenu">${data[i]}</label>
  621. </div>`;
  622. }
  623. var html = '<div class="d-flex flex-column menu" style="gap:0.3rem">' + innerhtml + '</div>';
  624. return html;
  625. }