New UI layout
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.

list.index.js 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. /*Data loading start here*/
  2. import {getCookie} from "./cookiehelper.js";
  3. import {getData, getDataObj} from "./base.js";
  4. import {_serverUrl} from "./setting.js";
  5. function createLoad(data) {
  6. let html = "";
  7. if (data.length != 0) {
  8. for (var i = 0; i < data.length; i++) {
  9. html += `<li class="p-0">
  10. <a href="javascript:;" class="dropdown-item create-form-btn" data-AppConfigType="${data[i].AppConfigType}" data-AppPermissionId="${data[i].AppPermissionId}" data-AppConfigurationId="${data[i].AppConfigurationId}" data-formid="${data[i].FormId}" data-installedAppid="${data[i].InstalledAppId}">${data[i].AppTitle}</a>
  11. </li>`;
  12. }
  13. } else {
  14. html += `<li class="p-0">Apps are Not Installed</li>`;
  15. }
  16. $("#crte-btn-lst").html(html);
  17. $(".create-form-btn").on("click", function () {
  18. const date = new Date();
  19. let number = date.getTime();
  20. let serverUrl = _serverUrl();
  21. let appName = $(this).text();
  22. let formId = $(this).attr("data-formid");
  23. let installedAppId = $(this).attr("data-installedappid");
  24. let appConfigurationId = $(this).attr("data-appconfigurationid");
  25. let pk_id = 0;
  26. const cookie = getCookie("_idty");
  27. let fomrhtml = "";
  28. if (cookie) {
  29. const {unibaseId, tenantId, userId} = JSON.parse(cookie);
  30. fomrhtml = `<div class="frm-ifre frm-ifre-${number}" id="frm-ifre-${number}">
  31. <ul class="m-0 p-0">
  32. <li class="frm-hdr">
  33. <div>${appName}</div>
  34. <div class="ctrl">
  35. <a href="javascript:;" class="minimize" data-unid="${number}" data-ispopup="true"><span><i class="la la-minus"></i></span></a>
  36. <a href="javascript:;" class="maximum" data-unid="${number}"><span><i class="la la-expand"></i></span></a>
  37. <a href="javascript:;" class="compress d-none" data-unid="${number}"><span><i class="las la-compress"></i></span></a>
  38. <a href="javascript:;" class="close" data-unid="${number}"><span><i class="la la-times"></i></span></a>
  39. </div>
  40. </li>
  41. <li class="frm-bdy">
  42. <iframe class="ld-frm-src" data-ispopup="false" src="${serverUrl}#/${unibaseId}/${tenantId}/${userId}/${installedAppId}/${formId}/${pk_id}/${appConfigurationId}/loadform"></iframe>
  43. </li>
  44. <li class="frm-ftr"></li>
  45. </ul>
  46. </div>`;
  47. }
  48. $("#list-page").after(fomrhtml);
  49. window.window.postMessage("ld-frm-ifrme", "*");
  50. hdrCrtnClckEvnt(number);
  51. });
  52. }
  53. function hdrCrtnClckEvnt(number) {
  54. $(`.frm-ifre-${number} .minimize`).on("click", function () {
  55. let id = $(this).attr("data-unid");
  56. let isPopUpState = $(this).attr("data-ispopup");
  57. let height = $(`.frm-ifre-${id}`).find(".frm-hdr").height();
  58. $(`.frm-ifre-${id} .frm-bdy`).toggleClass("d-none");
  59. if (isPopUpState == "true") {
  60. // popup large
  61. $(this).attr("data-ispopup", "false");
  62. $(`.frm-ifre-${id}`).css({
  63. width: "22%",
  64. height: height,
  65. bottom: "0px",
  66. });
  67. } else {
  68. // popup small
  69. $(this).attr("data-ispopup", "true");
  70. $(`.frm-ifre-${id}`).css({
  71. width: "",
  72. height: "",
  73. bottom: "",
  74. });
  75. }
  76. });
  77. $(`.frm-ifre-${number} .maximum`).on("click", function () {
  78. let id = $(this).attr("data-unid");
  79. $(this).addClass("d-none");
  80. $(this).siblings(".compress").removeClass("d-none");
  81. $(`.frm-ifre-${id}`).find(".ld-frm-src").attr("data-ispopup", "true");
  82. $(`.frm-ifre-${id}`).css({width: "75%", height: "", bottom: "auto"});
  83. $(`.frm-ifre-${id} .ld-frm-src`).css({width: "100%"});
  84. $(`.frm-ifre-${id} .frm-bdy`).removeClass("d-none");
  85. $("#list-page").css({filter: "blur(2px)", opacity: "0.5"});
  86. });
  87. $(`.frm-ifre-${number} .compress`).on("click", function () {
  88. let id = $(this).attr("data-unid");
  89. $(this).addClass("d-none");
  90. $(this).siblings(".maximum").removeClass("d-none");
  91. $(`.frm-ifre-${id}`).css({width: "", bottom: ""});
  92. $(`.frm-ifre-${id} .ld-frm-src`).css({width: ""});
  93. $("#list-page").css({filter: "", opacity: ""});
  94. });
  95. $(`.frm-ifre-${number} .close`).on("click", function () {
  96. let id = $(this).attr("data-unid");
  97. $("#list-page").css({filter: "unset", opacity: "1"});
  98. $(`.frm-ifre-${id}`).remove();
  99. });
  100. }
  101. function loadData() {
  102. getData(
  103. "apis/v4/unibase/reminders/platform/getunreadreminders/ReminderType/6/PageSize/20"
  104. ).then(function (result) {
  105. let response = JSON.parse(result.result);
  106. if (response.length != 0) {
  107. // Notifcations
  108. let bdyUI = '<div class="accordion" id="notifi-list">';
  109. for (var i = 0; i < response.length; i++) {
  110. bdyUI += `<li class="item-li" id="${response[i].ReminderId}" data-ref="${response[i].RedirectOptions.RefId}" data-installedAppId="${response[i].RedirectOptions.InstalledAppId}" data-formId="${response[i].RedirectOptions.CreateFormId}">
  111. <div class="accordion-header" id="accHeader-${response[i].ReminderId}">
  112. <div class="notifiListItms accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#collapse-${response[i].ReminderId}" aria-expanded="false" aria-controls="collapseOne">
  113. <div class="row m-0 w-100 p-0 ">
  114. <div class="col-1 ">
  115. <input class="form-check-input mx-1" type="checkbox" value="" id="flexCheckDefault">
  116. </div>
  117. <div class="col-4 text-truncate">
  118. <span class="mx-1">${response[i].Subject}</span>
  119. </div>
  120. <div class="col-5 text-truncate">
  121. <span class="mx-1">${response[i].Message}</span>
  122. </div>
  123. <div class="col-2 text-truncate">
  124. <span class="mx-1">22 minutes ago</span>
  125. </div>
  126. </div>
  127. </div>
  128. <div id="collapse-${response[i].ReminderId}" class="accordion-collapse collapse" aria-labelledby="accHeader-${response[i].ReminderId}" data-bs-parent="#notifi-list">
  129. <div class="accordion-body" id="accBody${response[i].ReminderId}">
  130. </div>
  131. </div>
  132. </div>
  133. </li>`;
  134. }
  135. bdyUI += "</div>";
  136. $(".bdy-ul").append(bdyUI);
  137. $(".notifiListItms").on("click", function () {
  138. let _this = $(this).parents(".item-li");
  139. let obj = {
  140. FromDate: "2022/11/30",
  141. InstalledAppId: Number($(_this).attr("data-installedAppId")),
  142. RecordId: Number($(_this).attr("data-ref")),
  143. ToDate: "2022/11/30",
  144. };
  145. //let obj = { "FromDate": "2022/11/30", "InstalledAppId": 102530270000109, "RecordId": 102533490346298, "ToDate": "2022/11/30" };
  146. getDataObj(
  147. "apis/v4/unibase/platform/widgets/getdefaultwidget",
  148. obj,
  149. true,
  150. "POST"
  151. ).then(function (response) {
  152. let res = JSON.parse(response.result),
  153. html = "";
  154. if (response.message == "200" && response.errors == null) {
  155. html = `<ul class="p-0 m-0 d-flex flex-row">`;
  156. if (
  157. res.AppConfigurations != null &&
  158. res.AppConfigurations.length > 0
  159. ) {
  160. for (var k = 0; k < res.AppConfigurations.length; k++) {
  161. html += `<li class="mx-2 btn-outline-primary btn btn-sm">${res.AppConfigurations[k].SettingName}</li>`;
  162. }
  163. } else {
  164. html += `<li class="p-1 my-0 alert alert-danger" role="alert">
  165. App Configurations Not configure
  166. </li>`;
  167. }
  168. if (res.Stages != null) {
  169. for (var x = 0; x < res.Stages.length; x++) {
  170. if (res.Stages[x].IsDefault) {
  171. html += `<li class="ml-auto">
  172. <a class="btn btn-sm btn-secondary dropdown-toggle" href="javascript:void(0)" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  173. ${res.Stages[x].StageName}
  174. </a>
  175. <ul class="dropdown-menu">`;
  176. }
  177. }
  178. for (var i = 0; i < res.Stages.length; i++) {
  179. if (!res.Stages[i].IsDefault) {
  180. html += `<li><a class="dropdown-item" href="javascript:void(0);">${res.Stages[i].StageName}</a></li>`;
  181. }
  182. }
  183. html += "</ul></li>";
  184. } else {
  185. html += `<li class="p-1 my-0 alert alert-danger ml-auto" role="alert">
  186. No Stages
  187. </li>`;
  188. }
  189. html += `<li class="p-1 mx-2 my-0 btn-outline-info detailBtn btn btn-sm" data-appid="${Number(
  190. $(_this).attr("data-installedAppId")
  191. )}" data-recordid="${Number(
  192. $(_this).attr("data-ref")
  193. )}">Details-Page</li></ul>`;
  194. } else {
  195. html += `<div class="alert alert-danger" role="alert">
  196. ${response.message} ${response.errors}
  197. </div>`;
  198. }
  199. $(_this).find(".accordion-body").html(html);
  200. detailClick();
  201. });
  202. });
  203. }
  204. });
  205. getData(
  206. "apis/v4/unibase/reminders/platform/getunreadreminders/ReminderType/1/PageSize/20"
  207. ).then(function (tskResp) {
  208. let response = JSON.parse(tskResp.result);
  209. if (response.length != 0) {
  210. let _tskhtml = '<div class="accordion" id="task-list">';
  211. for (var i = 0; i < response.length; i++) {
  212. _tskhtml += `<li class="item-li" id="${response[i].ReminderId}" data-ref="${response[i].RedirectOptions.RefId}" data-installedAppId="${response[i].RedirectOptions.InstalledAppId}" data-formId="${response[i].RedirectOptions.CreateFormId}">
  213. <div class="accordion-header" id="accHeader-${response[i].ReminderId}">
  214. <div class="tskListItms accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#collapse-${response[i].ReminderId}" aria-expanded="false" aria-controls="collapseOne">
  215. <div class="row m-0 w-100 p-0 ">
  216. <div class="col-1 ">
  217. <input class="form-check-input mx-1" type="checkbox" value="" id="flexCheckDefault">
  218. </div>
  219. <div class="col-4 text-truncate">
  220. <span class="mx-1">${response[i].Subject}</span>
  221. </div>
  222. <div class="col-5 text-truncate">
  223. <span class="mx-1">${response[i].Message}</span>
  224. </div>
  225. <div class="col-2 text-truncate">
  226. <span class="mx-1">2 seconds</span>
  227. </div>
  228. </div>
  229. </div>
  230. <div id="collapse-${response[i].ReminderId}" class="accordion-collapse collapse" aria-labelledby="accHeader-${response[i].ReminderId}" data-bs-parent="#notifi-list">
  231. <div class="accordion-body" id="accBody${response[i].ReminderId}">
  232. <ul class="p-0 m-0 d-flex flex-row justify-content-between">
  233. <li class="mx-2 btn-outline-success btn btn-sm">Confirm</li>
  234. <li class="mx-2 btn-outline-danger btn btn-sm">Reject</li>
  235. <li class="mx-2 btn-outline-primary btn btn-sm">Close</li>
  236. <li class="mx-2 btn-outline-info detailBtn btn btn-sm" data-appId="${response[i].RedirectOptions.InstalledAppId}" data-recordId="${response[i].RedirectOptions.RefId}">Details-Page</li>
  237. </ul>
  238. </div>
  239. </div>
  240. </div>
  241. </li>`;
  242. }
  243. _tskhtml += "</div>";
  244. $(".bdy-ul").append(_tskhtml);
  245. detailClick();
  246. }
  247. });
  248. // create button apps load
  249. let appName = [];
  250. getData("apis/v4/unibase/platform/apps/myapps").then(function (res) {
  251. let response = JSON.parse(res.result);
  252. jQuery.each(response, async function (index, item) {
  253. let installedAppId = Number(item.MyAppId);
  254. await getData(
  255. `apis/v4/unibase/platform/apps/listappconfigurations/installedappid/${installedAppId}`
  256. ).then(function (result) {
  257. if (
  258. result.result != null &&
  259. result.result != "" &&
  260. result.result != "[]"
  261. ) {
  262. let _data = JSON.parse(result.result);
  263. let data = _data.filter((x) => x.SettingUrlType == 1);
  264. if (data.length != 0) {
  265. appName.push({
  266. SettingUrlType: data[0].SettingUrlType,
  267. AppTitle: data[0].AppTitle,
  268. FormId: data[0].FormId,
  269. InstalledAppId: data[0].InstalledAppId,
  270. RoleSettingAppId: data[0].RoleSettingAppId,
  271. InstalledAppGuid: data[0].InstalledAppGuid,
  272. AppConfigurationId: data[0].AppConfigurationId,
  273. AppPermissionId: data[0].AppPermissionId,
  274. AppConfigType: data[0].AppConfigType,
  275. });
  276. }
  277. }
  278. });
  279. await createLoad(appName);
  280. });
  281. });
  282. }
  283. export function detailClick() {
  284. $(".detailBtn").click(function () {
  285. let serverUrl = _serverUrl();
  286. $(".bdy-ul").addClass("d-none");
  287. let installedAppId = +$(this).attr("data-appId");
  288. let recordId = +$(this).attr("data-recordId");
  289. // Unibase.Themes.Compact.Components.Notification.Instance().loadReminderDetails(105013010001972,105010260000090,'Details','null',6,0,null)
  290. const cookie = getCookie("_idty");
  291. if (cookie) {
  292. const {unibaseId, tenantId, userId} = JSON.parse(cookie);
  293. debugger;
  294. $("#detailIframe").html(
  295. `<iframe width="100%" style="min-height:calc(100vh - ${$(
  296. ".tp-bar"
  297. ).height()}px)"  name="srcframe" id="srcframe" class="srcframe" src="${serverUrl}#/${unibaseId}/${tenantId}/${userId}/${recordId}/${installedAppId}/loadDetail"></iframe>`
  298. );
  299. }
  300. });
  301. }
  302. export function initListIndex() {
  303. let _userInfo = atob(document.cookie.split("=")[1]);
  304. let userInfo = " JSON.parse(_userInfo).result";
  305. let sessionId = "userInfo.sessionId";
  306. let usrinfoHTML = `<li><a class="dropdown-item" href="javascript:void(0);">${userInfo.name}</a></li>
  307. <li><a class="dropdown-item" href="javascript:void(0);">Cloud Settings</a></li>
  308. <li><a class="dropdown-item" href="javascript:void(0);">Help</a></li>
  309. <li><a class="dropdown-item" href="javascript:void(0);">Logoff</a></li>`;
  310. $(".icn-circle").text(userInfo?.name?.charAt(0)?.toUpperCase());
  311. $(".uindtls").html(usrinfoHTML);
  312. // List Page loading
  313. /*Data loading start here*/
  314. $(".mnNvIcn").click(function () {
  315. $(".lft-nav-bar").toggleClass("lft-nav-bar-Wrap");
  316. $(".ctr-lst-pge").toggleClass("lft-nav-bar-Wrap");
  317. });
  318. $(".mre-drp a.sub-nav-item.more").on("click", function () {
  319. $(".sub-nav-item").removeClass("active");
  320. if ($(this)[0].className.includes("active")) {
  321. $(this).find("i").css("transform", "rotate(0deg)");
  322. $(this).removeClass("active");
  323. } else {
  324. $(this).find("i").css("transform", "rotate(180deg)");
  325. $(this).addClass("active");
  326. }
  327. $(this).siblings(".ul-drpdown").toggleClass("d-none");
  328. });
  329. $("a.sub-nav-item")
  330. .not(".more.active")
  331. .on("click", function () {
  332. $(".sub-nav-item").not(".more.active").removeClass("active");
  333. $(this).addClass("active");
  334. });
  335. loadData();
  336. }