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.

import.js 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Apps;
  6. (function (Apps) {
  7. let Components;
  8. (function (Components) {
  9. class Import extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.appmanager = Apps.Managers.AppManager.Instance();
  13. this.navigationhelper = Unibase.Platform.Helpers.NavigationHelper.Instance();
  14. }
  15. cssFiles() {
  16. return [];
  17. }
  18. jsFiles() {
  19. return ['platform/apps/components/appbuilder.js', 'platform/apps/components/import.js', "platform/forms/components/formviewer/formviewer.js", 'libs/parsley/parsley.min.js', 'platform/core/infos/status.js', '/platform/core/helpers/file/filehelper.js', 'platform/permission/managers/permissionmanager.js'];
  20. }
  21. html(id, containerid) {
  22. var instance = this;
  23. var data;
  24. if (this.DuplicateHtml == true) {
  25. var installedappid = Unibase.Themes.Providers.DetailHelper.recordId;
  26. instance.appmanager.getChilds(installedappid).then(function (response) {
  27. data = response.result;
  28. }).then(function () {
  29. if (data.length > 0) {
  30. var html1 = "";
  31. $(".div_childbody").empty();
  32. for (let i = 0; i < data.length; i++) {
  33. html1 += '<div class="row div_childs"><div class="col-sm-4" style="margin-top:50px"><strong><span class="sp_appname" data-text=' + data[i].InstalledAppId + '>' + data[i].AppTitle + '</span></strong></div><div class="col-sm-6"> <div class="floating-label-form-group"> <label for= "txt_childapp" class= "font-bold"> App Title <span class="text-danger">*</span> </label > <input type="text" id = "txt_Childapp" class="form-control floating-label-control required childapp" data - isdynamic="false" placeholder = "App Title *" data - placeholder="Enter App Title" data-label="App Title *" autocomplete = "off"/></div></div></div>';
  34. }
  35. $(".div_childapp").removeClass('hidden');
  36. $(".child_card").removeClass('hidden');
  37. $(".div_childbody").append(html1);
  38. }
  39. });
  40. var html = `<form id="frmUnibase_DuplicateApp" data-validate="parsley" data-isdynamic="false"><div id="div_duplicatemessage" class="clear"></div><div class="card bg-light"><div class="b-b bg-white card-header header"><strong class="text-dark title" id="lbl_title">Duplicate App</strong> </div>
  41. <div class="card-body scrollable" id = "divCreateApp"> <div class="bg-white card"> <div id="unibase_ValidationSummary" class="clear"> </div><div class="card-body"><div class="row"> <div class="col-sm-6"> <div class="floating-label-form-group"> <label for= "txt_FriendlyName" class= "font-bold"> App Title <span class="text-danger"> * </span></label> <input type="text" id = "txt_Name" class="form-control floating-label-control required" data - isdynamic="false" placeholder = "App Title *" data - placeholder="Enter App Title" data - label="App Title *" autocomplete = "off"/> </div></div>
  42. <div class="col-sm-6"> <div class="floating-label-form-group div_IconGroupName" id = "div_IconMargin"> <label for= "txt_IconName" class= "font-bold"> Icon Name <span class="text-danger"> * </span></label > <input type="text" id = "txt_Icon" class="form-control floating-label-control tokenable" data - isdynamic="false" placeholder = "Icon Name *" data - placeholder="Enter Icon Name" data - label="Icon Name *" autocomplete = "off"> <input type='hidden' id = 'txtfafaIcon'/> <div class='div_GroupIcon'></div></div> </div></div><div class='col-sm-12 hidden div_Icons' id = 'icons'>
  43. <div id='appicons' class='panel panel-default'><ul class='list-group no-radius m-b-none list-group-item no-border icon-list'> </ul></div></div> </div></div><div class="b-b bg-white div_childapp hidden card-header header"><strong class="text-dark title">Child Apps</strong> </div> <div class="bg-white card child_card hidden"><div class="card-body div_childbody"></div></div> </div><div class="bg-white card-footer footer" id = "CreateAppFooter"> <button id="btn_CloseDuplicateApp" class="btn btn-secondary btn-sm mr-auto"> Close </button><button id="btn_SaveDuplicateApp" class="btn btn-primary btn-sm pull-right">Save</button></div></div></form>`;
  44. return html;
  45. }
  46. else if (this.PermissionsExportImportHtml == true) {
  47. return `<div class="b-b bg-white header"> <strong>Export/Import Permissions</strong></div><div class="simple-scroll-bar scrollable"> <div id="div_permissionsimportmessage" class="clear"></div><form id="form_AllAppsPermissionsExportImport" data-validate="parsley" data-isdynamic="false"> <div class="card"> <div class="card-header">For All Apps</div><div class="card-body"> <ul class="d-flex justify-content-between w-100"> <li class=" w-45"> <div class="card-header">Import</div><div class="card-body"> <div class="" id="div_AllPermissionsImport"> Select file to import </br> </br> <input type="file" id="import_AllAppsPermissionFile" class="bg-light required"> <br/> <br/> <a href="javascript:;" id="allAppsPermission_fileUpload" class="btn btn-warning text-white">Upload</a> </div></div></li><li class="w-45 h-130p"> <div class="card-header"> Export</div><div class="card-body"> <a href="javascript:;" onclick="Unibase.Platform.Apps.Components.Import.Instance().exportAppPermissions();" class="btn btn-info text-white">Export</a> </div></li></ul> </div></div></form> <form id="form_SingleAppPermissionsImport" data-validate="parsley" data-isdynamic="false"> <div class="card"> <div class="card-header"> For Individual App</div><div class="card-body"> <ul class="d-flex flex-column w-100"> <li class="card w-50"> <div class="card-header">Import</div><div class="card-body"> <div class="" id="div_IndividualAppPermissionsImport">Select File to import <br/></br> <input type="file" id="import_SingleAppPermissionFile" class="bg-light required"> <br/> <br/> <a href="javascript:;" id="singleAppPermission_fileUpload" class="btn btn-warning text-white">Upload</a> </div></div></li></ul> </div></div></form></div><div class="bg-white footer"> <button id="btn_CloseImport" class="btn btn-sm mr-auto btn-close">Close</button></div>`;
  48. }
  49. else {
  50. return `<form id="form_Import" data-validate="parsley" data-isdynamic="false"><div class="b-b bg-white header"><strong>Import App</strong></div><div class="simple-scroll-bar scrollable"><div id="div_importmessage" class="clear"></div><div class="card" id="importexportsection"><div class="card-header">Select file to import</div><div class="card-body"><div id="div_Import"><input type="file" id="import_File" class="bg-light required"><br><br><input type="radio" id="apps" class="app_store_import_apps" onclick="Unibase.Platform.Apps.Components.Import.Instance().ImportType(1)" name="app_store_import_radio_btn" value="apps"><label for="apps">Apps</label><br><input type="radio" id="widget" class="app_store_import_widget" onclick="Unibase.Platform.Apps.Components.Import.Instance().ImportType(2)" name="app_store_import_radio_btn" value="Widget"><label for="widget">Widget</label><br><br><a href="javascript:;" id="fileUpload" class="btn btn-warning text-white">Upload</a></div></div></div></div><div class="bg-white footer"><button id="btn_CloseImport" class="btn btn-sm mr-auto btn-close">Close</button></div></form>`;
  51. }
  52. }
  53. load(id, containerid, callback) {
  54. var instance = this;
  55. $("#btn_CloseImport,#btn_CloseDuplicateApp").click(function () {
  56. $('#' + containerid).modal('hide');
  57. $('#' + containerid).remove();
  58. });
  59. $("#btn_Import").click(function () {
  60. $("#importexportsection").removeClass("hidden");
  61. $("#div_Import").removeClass("hidden");
  62. });
  63. $('#import_File').change(function (e) {
  64. Unibase.Platform.Apps.Components.Import.Instance().fileEvent(e);
  65. });
  66. $('#import_AllAppsPermissionFile').change(function (e) {
  67. Unibase.Platform.Apps.Components.Import.Instance().allAppsPermissionFileEvent(e);
  68. });
  69. $('#import_SingleAppPermissionFile').change(function (e) {
  70. Unibase.Platform.Apps.Components.Import.Instance().singleAppPermissionFileEvent(e);
  71. });
  72. $("#btn_SaveDuplicateApp").on("click", function () {
  73. let controlid = "frmUnibase_DuplicateApp";
  74. let result = Unibase.Platform.Forms.Components.FormViewer.Instance().requiredFieldValidation(controlid);
  75. if (result == false) {
  76. MessageHelper.Instance().showError("Mandatory Fields are missing", "div_duplicatemessage");
  77. return false;
  78. }
  79. Import.Instance().SaveDuplicateApp(containerid);
  80. });
  81. $("#txt_Icon").focus(function () {
  82. $(".div_Icons").fadeIn();
  83. $("#icons").toggleClass("hidden");
  84. $(".div_Icons").removeClass('hidden');
  85. });
  86. $("#txt_Icon").focusout(function () {
  87. $(".div_Icons").fadeOut();
  88. });
  89. Unibase.Platform.Apps.Components.AppBuilder.Instance().loadIcons();
  90. $("#fileUpload").click(function () {
  91. let appcontrolid = "form_Import";
  92. let result = Unibase.Platform.Forms.Components.FormViewer.Instance().requiredFieldValidation(appcontrolid);
  93. if (result == false) {
  94. MessageHelper.Instance().showError("Please Select File", "div_importmessage");
  95. return false;
  96. }
  97. else {
  98. setTimeout(function () {
  99. if (Unibase.Platform.Apps.Components.Import.Instance().importType == "apps") {
  100. Import.Instance().importApp(containerid);
  101. }
  102. else if (Unibase.Platform.Apps.Components.Import.Instance().importType == "widget") {
  103. instance.fileCacheHelper.loadJsFile("platform/widgets/components/widget.js", function () {
  104. Unibase.Platform.Widgets.Components.Widget.Instance().importWidget(containerid, Unibase.Platform.Apps.Components.Import.fileData);
  105. });
  106. }
  107. else {
  108. MessageHelper.Instance().showError("Please Select Import Type", "div_importmessage");
  109. Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
  110. }
  111. }, 1000);
  112. Unibase.Platform.Helpers.NavigationHelper.Instance().showLoading();
  113. }
  114. });
  115. $("#allAppsPermission_fileUpload").click(function () {
  116. let appcontrolid = "form_AllAppsPermissionsExportImport";
  117. let result = Unibase.Platform.Forms.Components.FormViewer.Instance().requiredFieldValidation(appcontrolid);
  118. if (result == false) {
  119. MessageHelper.Instance().showError("Please Select File", "div_permissionsimportmessage");
  120. return false;
  121. }
  122. else {
  123. setTimeout(function () {
  124. Import.Instance().importAppPermissions(containerid);
  125. }, 1000);
  126. Unibase.Platform.Helpers.NavigationHelper.Instance().showLoading();
  127. }
  128. });
  129. $("#singleAppPermission_fileUpload").click(function () {
  130. let appcontrolid = "form_SingleAppPermissionsImport";
  131. let result = Unibase.Platform.Forms.Components.FormViewer.Instance().requiredFieldValidation(appcontrolid);
  132. if (result == false) {
  133. MessageHelper.Instance().showError("Please Select File", "div_permissionsimportmessage");
  134. return false;
  135. }
  136. else {
  137. setTimeout(function () {
  138. Import.Instance().importAppPermissions(containerid);
  139. }, 1000);
  140. Unibase.Platform.Helpers.NavigationHelper.Instance().showLoading();
  141. }
  142. });
  143. }
  144. ImportType(importType) {
  145. if (importType == 1) {
  146. this.importType = "apps";
  147. }
  148. else if (importType == 2) {
  149. this.importType = "widget";
  150. }
  151. }
  152. importApp(containerid) {
  153. var instance = this;
  154. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/importapp/np';
  155. Platform.Helpers.FileHelper.Instance().upload(url, Unibase.Platform.Apps.Components.Import.fileData).then(function (response) {
  156. if (response.status == Unibase.Data.Status.Error) {
  157. MessageHelper.Instance().showError(response.message, "div_importmessage");
  158. }
  159. else {
  160. MessageHelper.Instance().showSuccess(response.message, "div_importmessage");
  161. $('#' + containerid).modal('hide');
  162. $('#' + containerid).remove();
  163. }
  164. Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
  165. });
  166. }
  167. showImport(isduplicate) {
  168. var obj = new Unibase.Platform.Apps.Components.Import;
  169. obj.DuplicateHtml = isduplicate;
  170. this.navigationHelper.popup(0, '', obj, null, Platform.Helpers.Size.Large);
  171. }
  172. permissionsExportImport(ispermissionhtml) {
  173. var obj = new Unibase.Platform.Apps.Components.Import;
  174. obj.PermissionsExportImportHtml = ispermissionhtml;
  175. this.navigationHelper.popup(0, '', obj, null, Platform.Helpers.Size.Large);
  176. }
  177. fileEvent($event) {
  178. const fileSelected = $event.target.files[0];
  179. Unibase.Platform.Apps.Components.Import.fileData = new FormData();
  180. Unibase.Platform.Apps.Components.Import.fileData.append(fileSelected.name, fileSelected);
  181. }
  182. singleAppPermissionFileEvent($event) {
  183. const fileSelected = $event.target.files[0];
  184. Unibase.Platform.Apps.Components.Import.permissionfileData = new FormData();
  185. Unibase.Platform.Apps.Components.Import.permissionfileData.append(fileSelected.name, fileSelected);
  186. }
  187. allAppsPermissionFileEvent($event) {
  188. const fileSelected = $event.target.files[0];
  189. Unibase.Platform.Apps.Components.Import.permissionfileData = new FormData();
  190. Unibase.Platform.Apps.Components.Import.permissionfileData.append(fileSelected.name, fileSelected);
  191. }
  192. exportAppRoleSettings() {
  193. var instance = this;
  194. instance.navigationHelper.showLoading();
  195. instance.appmanager.exportAppRoleSettings().then(function (response) {
  196. if (response.status == Unibase.Data.Status.Error) {
  197. instance.navigationHelper.hideLoading();
  198. MessageHelper.Instance().showError(response.message, "div_permissionsimportmessage");
  199. return false;
  200. }
  201. var filename = "Permissions.xml";
  202. var xmltext = response.result;
  203. var pom = document.createElement('a');
  204. var bb = new Blob([xmltext], { type: 'text/plain' });
  205. pom.setAttribute('href', window.URL.createObjectURL(bb));
  206. pom.setAttribute('download', filename);
  207. pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
  208. pom.draggable = true;
  209. pom.classList.add('dragout');
  210. pom.click();
  211. instance.navigationHelper.hideLoading();
  212. });
  213. }
  214. importAppRoleSettings(containerid) {
  215. var instance = this;
  216. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/importapprolesettings/np';
  217. Platform.Helpers.FileHelper.Instance().upload(url, Unibase.Platform.Apps.Components.Import.permissionfileData).then(function (response) {
  218. if (response.status == Unibase.Data.Status.Error) {
  219. MessageHelper.Instance().showError(response.result, "div_permissionsimportmessage");
  220. }
  221. else {
  222. MessageHelper.Instance().showSuccess(response.result, "div_permissionsimportmessage");
  223. $('#' + containerid).modal('hide');
  224. $('#' + containerid).remove();
  225. }
  226. Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
  227. });
  228. }
  229. SaveDuplicateApp(containerid) {
  230. var instance = this;
  231. var recordid = Unibase.Themes.Providers.DetailHelper.recordId;
  232. $(".div_childs").each(function () {
  233. var oldappname = $(this).find(".sp_appname").text();
  234. var newappname = $(this).find("#txt_Childapp").val();
  235. Import.childappnames.push({ oldapptitle: oldappname, newapptitle: newappname });
  236. });
  237. let postdata = {
  238. InstalledAppId: recordid,
  239. AppTitle: $("#txt_Name").val(),
  240. IconName: $("#txtfafaIcon").val(),
  241. ChildApps: Import.childappnames
  242. };
  243. instance.navigationHelper.showLoading();
  244. instance.appmanager.duplicateApp(postdata).then(function (response) {
  245. if (response.status == Unibase.Data.Status.Error) {
  246. MessageHelper.Instance().showError(response.message, "div_duplicatemessage");
  247. }
  248. else {
  249. MessageHelper.Instance().showSuccess(response.message, "div_duplicatemessage");
  250. $('#' + containerid).modal('hide');
  251. $('#' + containerid).remove();
  252. }
  253. instance.navigationHelper.hideLoading();
  254. });
  255. }
  256. exportAppPermissions() {
  257. var instance = this;
  258. instance.navigationHelper.showLoading();
  259. instance.appmanager.exportAppPermissions(0).then(function (response) {
  260. if (response.status == Unibase.Data.Status.Error) {
  261. instance.navigationHelper.hideLoading();
  262. MessageHelper.Instance().showError(response.message, "div_permissionsimportmessage");
  263. return false;
  264. }
  265. var filename = "AllAppPermissions.xml";
  266. var xmltext = response.result;
  267. var pom = document.createElement('a');
  268. var bb = new Blob([xmltext], { type: 'text/plain' });
  269. pom.setAttribute('href', window.URL.createObjectURL(bb));
  270. pom.setAttribute('download', filename);
  271. pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
  272. pom.draggable = true;
  273. pom.classList.add('dragout');
  274. pom.click();
  275. instance.navigationHelper.hideLoading();
  276. });
  277. }
  278. importAppPermissions(containerid) {
  279. var instance = this;
  280. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/importapppermissions/np';
  281. Platform.Helpers.FileHelper.Instance().upload(url, Unibase.Platform.Apps.Components.Import.permissionfileData).then(function (response) {
  282. if (response.status == Unibase.Data.Status.Error) {
  283. MessageHelper.Instance().showError(response.message, "div_permissionsimportmessage");
  284. }
  285. else {
  286. MessageHelper.Instance().showSuccess(response.result, "div_permissionsimportmessage");
  287. $('#' + containerid).modal('hide');
  288. $('#' + containerid).remove();
  289. }
  290. Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
  291. });
  292. }
  293. static Instance() {
  294. if (this.instance === undefined) {
  295. this.instance = new Import();
  296. }
  297. return this.instance;
  298. }
  299. }
  300. Import.fileData = new FormData();
  301. Import.permissionfileData = new FormData();
  302. Import.childappnames = [];
  303. Components.Import = Import;
  304. })(Components = Apps.Components || (Apps.Components = {}));
  305. })(Apps = Platform.Apps || (Platform.Apps = {}));
  306. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  307. })(Unibase || (Unibase = {}));