module.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. registerController("AdvancedResourcesController", ['$api', '$scope', '$timeout', function($api, $scope, $timeout){
  2. $scope.freeDisk = "";
  3. $scope.freeMem = "";
  4. $scope.droppedCaches = false;
  5. $scope.device = "";
  6. $scope.reloadData = (function() {
  7. $scope.freeDisk = "";
  8. $scope.freeMem = "";
  9. $api.request({
  10. module: 'Advanced',
  11. action: 'getResources'
  12. }, function(response){
  13. $scope.freeDisk = response.freeDisk;
  14. $scope.freeMem = response.freeMem;
  15. });
  16. });
  17. $scope.dropCaches = (function() {
  18. $api.request({
  19. module: 'Advanced',
  20. action: 'dropCaches'
  21. }, function(response) {
  22. if (response.success === true) {
  23. $scope.droppedCaches = true;
  24. $timeout(function(){
  25. $scope.droppedCaches = false;
  26. }, 2000);
  27. }
  28. });
  29. });
  30. $scope.reloadData();
  31. $api.onDeviceIdentified(function(device, scope) {
  32. scope.device = device;
  33. }, $scope);
  34. }]);
  35. registerController("AdvancedUSBController", ['$api', '$scope', '$timeout', '$interval', function($api, $scope, $timeout, $interval){
  36. $scope.formattingSDCard = false;
  37. $scope.lsusb = "";
  38. $scope.fstab = "";
  39. $scope.fstabSaved = false;
  40. $scope.device = "";
  41. $scope.formatSDCard = (function() {
  42. $api.request({
  43. module: 'Advanced',
  44. action: 'formatSDCard'
  45. }, function(response){
  46. if (response.success === true) {
  47. $scope.formattingSDCard = true;
  48. $scope.SDCardInterval = $interval(function(){
  49. $api.request({
  50. module: 'Advanced',
  51. action: 'formatSDCardStatus'
  52. }, function(response) {
  53. if (response.success === true){
  54. $scope.formattingSDCard = false;
  55. $scope.formatSuccess = true;
  56. $interval.cancel($scope.SDCardInterval);
  57. $timeout(function(){
  58. $scope.formatSuccess = false;
  59. }, 2000);
  60. }
  61. });
  62. }, 5000);
  63. }
  64. });
  65. });
  66. $scope.reloadData = (function() {
  67. $scope.lsusb = "";
  68. $scope.fstab = "";
  69. $api.request({
  70. module: 'Advanced',
  71. action: 'getUSB'
  72. }, function(response){
  73. $scope.lsusb = response.lsusb;
  74. });
  75. $api.request({
  76. module: 'Advanced',
  77. action: 'getFstab'
  78. }, function(response) {
  79. if (response.error === undefined) {
  80. $scope.fstab = response.fstab;
  81. }
  82. });
  83. });
  84. $scope.saveFstab = (function() {
  85. $api.request({
  86. module: 'Advanced',
  87. action: 'saveFstab',
  88. fstab: $scope.fstab
  89. }, function(response) {
  90. if (response.success === true) {
  91. $scope.fstabSaved = true;
  92. $timeout(function(){
  93. $scope.fstabSaved = false;
  94. }, 2000);
  95. }
  96. });
  97. });
  98. $scope.reloadData();
  99. $api.onDeviceIdentified(function(device, scope) {
  100. scope.device = device;
  101. }, $scope);
  102. $scope.$on('$destroy', function() {
  103. $interval.cancel($scope.SDCardInterval);
  104. });
  105. }]);
  106. registerController("AdvancedCSSController", ['$api', '$scope', '$timeout', function($api, $scope, $timeout){
  107. $scope.css = "";
  108. $scope.cssSaved = false;
  109. $scope.reloadData = (function() {
  110. $api.request({
  111. module: 'Advanced',
  112. action: 'getCSS'
  113. }, function(response) {
  114. if (response.error === undefined) {
  115. $scope.css = response.css;
  116. }
  117. });
  118. });
  119. $scope.saveCSS = (function() {
  120. $api.request({
  121. module: 'Advanced',
  122. action: 'saveCSS',
  123. css: $scope.css
  124. }, function(response) {
  125. if (response.success === true) {
  126. $scope.cssSaved = true;
  127. $timeout(function(){
  128. $scope.cssSaved = false;
  129. }, 2000);
  130. }
  131. });
  132. });
  133. }]);
  134. registerController("AdvancedUpgradeController", ['$api', '$scope', '$interval', function($api, $scope, $interval){
  135. $scope.error = "";
  136. $scope.loading = false;
  137. $scope.upgradeFound = false;
  138. $scope.downloadInterval = false;
  139. $scope.downloading = false;
  140. $scope.downloaded = false;
  141. $scope.upgradeData = {};
  142. $scope.downloadPercentage = 0;
  143. $scope.firmwareVersion = "";
  144. $scope.performUpgradeStart = false;
  145. $scope.isManualUpgrade = false;
  146. $scope.manualUpgradeUrl = "";
  147. $scope.showManualUpgradeError = false;
  148. $scope.keepSettings = true;
  149. $scope.manualKeepSettings = true;
  150. $scope.reloadData = (function() {
  151. $api.request({
  152. module: 'Advanced',
  153. action: 'getCurrentVersion'
  154. }, function(response) {
  155. if (response.error === undefined) {
  156. $scope.firmwareVersion = response.firmwareVersion;
  157. }
  158. });
  159. });
  160. $scope.checkForUpgrade = (function() {
  161. $scope.loading = true;
  162. $api.request({
  163. module: 'Advanced',
  164. action: 'checkForUpgrade'
  165. }, function(response) {
  166. $scope.loading = false;
  167. if (response.error) {
  168. $scope.error = response.error;
  169. } else if (response.upgrade) {
  170. $scope.upgradeFound = true;
  171. $scope.upgradeData = response.upgradeData;
  172. $scope.error = false;
  173. }
  174. });
  175. });
  176. $scope.downloadUpgrade = (function() {
  177. $api.request({
  178. module: 'Advanced',
  179. action: 'downloadUpgrade',
  180. upgradeUrl: $scope.upgradeData['upgradeUrl']
  181. }, function(response) {
  182. if (response.success === true) {
  183. $scope.downloading = true;
  184. $scope.downloadInterval = $interval(function() {
  185. $scope.getDownloadStatus($scope.upgradeData['checksum'], false);
  186. }, 1000);
  187. }
  188. });
  189. });
  190. $scope.downloadManualUpgrade = (function() {
  191. var isValid = $scope.manualUpgradeUrl.match(
  192. /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g
  193. );
  194. if (isValid === null) {
  195. $scope.showManualUpgradeError = true;
  196. $interval(function(){
  197. $scope.showManualUpgradeError = false;
  198. }, 2000);
  199. return;
  200. }
  201. $scope.downloading = false;
  202. $scope.downloaded = false;
  203. $scope.isManualUpgrade = true;
  204. $api.request({
  205. module: 'Advanced',
  206. action: 'downloadUpgrade',
  207. upgradeUrl: $scope.manualUpgradeUrl
  208. }, function(response) {
  209. if (response.success === true) {
  210. $scope.downloading = true;
  211. $scope.downloadInterval = $interval(function() {
  212. $scope.getDownloadStatus('', true);
  213. }, 1000);
  214. }
  215. });
  216. });
  217. $scope.getDownloadStatus = (function(checksum, isManuelUpdate) {
  218. $api.request({
  219. module: 'Advanced',
  220. action: 'getDownloadStatus',
  221. checksum: checksum,
  222. isManuelUpdate: isManuelUpdate
  223. }, function(response) {
  224. if ($scope.downloaded) {
  225. return;
  226. }
  227. if (response.completed === true) {
  228. $scope.downloading = false;
  229. $scope.downloaded = true;
  230. $interval.cancel($scope.downloadInterval);
  231. if (isManuelUpdate) {
  232. $scope.upgradeData = response;
  233. } else {
  234. $scope.performUpgrade(isManuelUpdate);
  235. }
  236. } else if (response.error) {
  237. $scope.error = response.error;
  238. } else {
  239. $scope.downloadPercentage = Math.round((response.downloaded / $scope.upgradeData['size']) * 100);
  240. }
  241. });
  242. });
  243. $scope.performUpgrade = (function(isManuelUpdate) {
  244. console.log({isManuelUpdate});
  245. $api.request({
  246. module: 'Advanced',
  247. action: 'performUpgrade',
  248. keepSettings: isManuelUpdate ? $('#manualKeepSettings').is(':checked') : $('#keepSettings').is(':checked'),
  249. }, function(response) {
  250. if (response.success === true) {
  251. $scope.performUpgradeStart = true;
  252. }
  253. });
  254. });
  255. $scope.$on('$destroy', function() {
  256. $interval.cancel($scope.downloadInterval);
  257. });
  258. }]);
  259. registerController("APITokenController", ['$api', '$scope', function($api, $scope) {
  260. $scope.apiTokens = [];
  261. $scope.newToken = {
  262. name: "",
  263. token: ""
  264. };
  265. $scope.reloadData = function(){
  266. $api.request({
  267. module: 'Advanced',
  268. action: 'getApiTokens'
  269. }, function(response){
  270. $scope.apiTokens = response.tokens;
  271. });
  272. };
  273. $scope.genApiToken = function(){
  274. $api.request({
  275. module: 'Advanced',
  276. action: 'addApiToken',
  277. name: $scope.newToken.name
  278. }, function(response){
  279. $scope.newToken.name = "";
  280. $scope.newToken.token = response.token;
  281. $scope.reloadData();
  282. });
  283. };
  284. $scope.revokeApiToken = function($event){
  285. var id = $event.target.getAttribute('tokenid');
  286. $api.request({
  287. module: 'Advanced',
  288. action: 'revokeApiToken',
  289. id: id
  290. }, function(){
  291. $scope.reloadData();
  292. });
  293. };
  294. $scope.selectElem = function(elem){
  295. var selectRange = document.createRange();
  296. selectRange.selectNodeContents(elem);
  297. var selection = window.getSelection();
  298. selection.removeAllRanges();
  299. selection.addRange(selectRange);
  300. };
  301. $scope.selectOnClick = function($event){
  302. var elem = $event.target;
  303. $scope.selectElem(elem);
  304. };
  305. }]);