PageRenderTime 45ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/web/appversion/app/components/tenant-add-package/controller.js

https://gitlab.com/cainplay/LeedianWebFramework
JavaScript | 240 lines | 192 code | 41 blank | 7 comment | 49 complexity | fc4410a5937e9185ebc64f5ffa4d32c8 MD5 | raw file
  1. robinApp.controller('CtrlAddPackageToTenant', ["$rootScope","$scope","$http",function ($rootScope, $scope, $http) {
  2. // globals
  3. $scope.loading = false;
  4. $scope.formData = {
  5. packageName: null,
  6. fromTenant: null,
  7. toTenant: null,
  8. password: null,
  9. guids: null
  10. };
  11. $scope.pageData = {
  12. packages: null
  13. };
  14. $scope.succeededCategory = "";
  15. $scope.failedCategory = "";
  16. $scope.succeededProducts = "";
  17. $scope.failedProducts = "";
  18. $scope.existingProducts = "";
  19. $scope.notFoundProducts = "";
  20. $scope.invalidGUIDs = "";
  21. function validateInput() {
  22. var valid = true;
  23. var msg = "";
  24. if ($scope.guids == "") {
  25. msg += "you should put guids of products to duplicate";
  26. valid = false;
  27. }
  28. if(msg != "") alert(msg);
  29. return valid;
  30. }
  31. function csvJSON(csv) {
  32. csv = csv.replace(" ", "");
  33. csv = csv.replace(/(\r\n|\n|\r)/gm, ",");
  34. var guids = csv.split(",");
  35. var result = {"guids": []};
  36. for(var i = 0; i < guids.length; i++) {
  37. if (guids[i] != "")
  38. result.guids.push(guids[i]);
  39. }
  40. return result; //JavaScript object
  41. //return JSON.stringify(result); //JSON
  42. }
  43. $scope.onAddPackageSubmitted = function() {
  44. if (!validateInput()) return;
  45. var guids = csvJSON($scope.formData.guids);
  46. $scope.succeededProducts = "";
  47. $scope.failedProducts = "";
  48. $scope.existingProducts = "";
  49. $scope.notFoundProducts = "";
  50. $scope.loading = true;
  51. $http({
  52. method: 'POST',
  53. url: '/mw/packages/duplicateProducts/' + $rootScope.tenantId +
  54. '?fromTenant=' + $scope.formData.fromTenant +
  55. '&toTenant=' + $scope.formData.toTenant +
  56. '&packageName=' + $scope.formData.packageName +
  57. '&password=' + $scope.formData.password,
  58. data: guids
  59. }).success(function (data) {
  60. //robinDialog.alert("Duplicated products '" + data + "'.");
  61. $scope.succeededCategory = "Added category - " + $scope.formData.packageName;
  62. if (data.succeededProducts.length != 0) {
  63. $scope.succeededProducts = "Succeeded products: " + data.succeededProducts.length + " - [";
  64. for (var i = 0; i < data.succeededProducts.length; ++i)
  65. $scope.succeededProducts += data.succeededProducts[i] + ", ";
  66. $scope.succeededProducts = $scope.succeededProducts.substring(0, $scope.succeededProducts.length - 2);
  67. $scope.succeededProducts += "]";
  68. }
  69. if (data.failedProducts.length != 0) {
  70. $scope.failedProducts = "Failed products: " + data.failedProducts.length + " - [";
  71. for (i = 0; i < data.failedProducts.length; ++i)
  72. $scope.failedProducts += data.failedProducts[i] + ", ";
  73. $scope.failedProducts = $scope.failedProducts.substring(0, $scope.failedProducts.length - 2);
  74. $scope.failedProducts += "]";
  75. }
  76. if (data.existingProducts.length != 0) {
  77. $scope.existingProducts = "Already exists products: " + data.existingProducts.length + " - [";
  78. for (i = 0; i < data.existingProducts.length; ++i)
  79. $scope.existingProducts += data.existingProducts[i] + ", ";
  80. $scope.existingProducts = $scope.existingProducts.substring(0, $scope.existingProducts.length - 2);
  81. $scope.existingProducts += "]";
  82. }
  83. if (data.notFoundProducts.length != 0) {
  84. $scope.notFoundProducts = "Not found products: " + data.notFoundProducts.length + " - [";
  85. for (i = 0; i < data.notFoundProducts.length; ++i)
  86. $scope.notFoundProducts += data.notFoundProducts[i] + ", ";
  87. $scope.notFoundProducts = $scope.notFoundProducts.substring(0, $scope.notFoundProducts.length - 2);
  88. $scope.notFoundProducts += "]";
  89. }
  90. $scope.loading = false;
  91. }).error(function (data, status, headers, config) {
  92. if (status == 401)
  93. robinDialog.alert(data);
  94. else if (status == 500)
  95. robinDialog.alert(data);
  96. else
  97. robinDialog.alert('server error, please try again.');
  98. $scope.loading = false;
  99. });
  100. };
  101. $scope.onSubmitCSV = function(csv) {
  102. //console.log(typeof(csv.files))
  103. $scope.formData.csvFile = csv.files[0]
  104. }
  105. $scope.onAddFileSubmitted = function() {
  106. var map = {}
  107. $scope.succeededCategory = "";
  108. $scope.failedCategory = "";
  109. $scope.succeededProducts = "";
  110. $scope.failedProducts = "";
  111. $scope.existingProducts = "";
  112. $scope.notFoundProducts = "";
  113. $scope.invalidGUIDs = "";
  114. Papa.parse($scope.formData.csvFile, {
  115. complete: function(results) {
  116. //console.log("Finished:", results.data);
  117. if (results.data.length > 2000) {
  118. robinDialog.alert('Too many products in file, please check.');
  119. return
  120. }
  121. var invalidGUIDs = [];
  122. results.data.forEach(function(item) {
  123. if (item[0] && $scope.isUUID(item[1])) {
  124. map[item[0]]? map[item[0]].push(item[1]): map[item[0]] = [item[1]]
  125. } else {
  126. invalidGUIDs.push(item[1])
  127. }
  128. })
  129. //console.log(map)
  130. if (invalidGUIDs.length > 0) {
  131. $scope.invalidGUIDs = "Invalid GUIDs or categories: " + invalidGUIDs;
  132. $scope.$digest();
  133. }
  134. if (Object.keys(map).length == 0) {
  135. robinDialog.alert('No valid UUIDs or catgories found in file, please check.');
  136. return
  137. }
  138. $scope.succeededProducts = "";
  139. $scope.failedProducts = "";
  140. $scope.existingProducts = "";
  141. $scope.notFoundProducts = "";
  142. var postData = {
  143. prods: map
  144. }
  145. $scope.loading = true;
  146. $http({
  147. method: 'POST',
  148. url: '/mw/packages/duplicateProducts/batch/' + $rootScope.tenantId +
  149. '?toTenant=' + $scope.formData.toTenant +
  150. '&password=' + $scope.formData.password,
  151. data: postData
  152. }).success(function (data) {
  153. //robinDialog.alert("Duplicated products '" + data + "'.");
  154. $scope.succeededCategory = "Added category - " + data.succeededCategories;
  155. if (data.failedCategories.length != 0) {
  156. $scope.failedCategory = "Failed category: " + data.failedCategories;
  157. }
  158. $scope.succeededProducts = "Succeeded products: " + data.succeededProducts.length;
  159. if (data.failedProducts.length != 0) {
  160. $scope.failedProducts = "Failed products(assembly is not supported): " + data.failedProducts.length + " - [";
  161. for (i = 0; i < data.failedProducts.length; ++i)
  162. $scope.failedProducts += data.failedProducts[i] + ", ";
  163. $scope.failedProducts = $scope.failedProducts.substring(0, $scope.failedProducts.length - 2);
  164. $scope.failedProducts += "]";
  165. }
  166. if (data.existingProducts.length != 0) {
  167. $scope.existingProducts = "Already exists products: " + data.existingProducts.length + " - [";
  168. for (i = 0; i < data.existingProducts.length; ++i)
  169. $scope.existingProducts += data.existingProducts[i] + ", ";
  170. $scope.existingProducts = $scope.existingProducts.substring(0, $scope.existingProducts.length - 2);
  171. $scope.existingProducts += "]";
  172. }
  173. if (data.notFoundProducts.length != 0) {
  174. $scope.notFoundProducts = "Not found products: " + data.notFoundProducts.length + " - [";
  175. for (i = 0; i < data.notFoundProducts.length; ++i)
  176. $scope.notFoundProducts += data.notFoundProducts[i] + ", ";
  177. $scope.notFoundProducts = $scope.notFoundProducts.substring(0, $scope.notFoundProducts.length - 2);
  178. $scope.notFoundProducts += "]";
  179. }
  180. $scope.loading = false;
  181. }).error(function (data, status, headers, config) {
  182. if (status == 401)
  183. robinDialog.alert(data);
  184. else if (status == 500)
  185. robinDialog.alert(data);
  186. else
  187. robinDialog.alert('server error, please try again.');
  188. $scope.loading = false;
  189. });
  190. }
  191. });
  192. }
  193. $scope.isUUID = function(v) {
  194. return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(v)
  195. }
  196. $scope.notEmpty = function(v) {
  197. return v != "";
  198. }
  199. }]);