New UI layout
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

list.index.js 18KB

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