2
0

UserImagePage.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. var UserImagePage = {
  2. onPageShow: function () {
  3. UserImagePage.reloadUser();
  4. $("#userImageDropZone", this).on('dragover', UserImagePage.onImageDragOver).on('drop', UserImagePage.onImageDrop);
  5. },
  6. onPageHide: function () {
  7. $("#userImageDropZone", this).off('dragover', UserImagePage.onImageDragOver).off('drop', UserImagePage.onImageDrop);
  8. },
  9. reloadUser: function () {
  10. var userId = getParameterByName("userId");
  11. Dashboard.showLoadingMsg();
  12. ApiClient.getUser(userId).done(function (user) {
  13. var page = $($.mobile.activePage);
  14. $('#uploadUserImage', page).val('').trigger('change');
  15. Dashboard.setPageTitle(user.Name);
  16. if (user.PrimaryImageTag) {
  17. var imageUrl = ApiClient.getUserImageUrl(user.Id, {
  18. height: 450,
  19. tag: user.PrimaryImageTag,
  20. type: "Primary"
  21. });
  22. $('#fldImage', page).show().html('').html("<img height='200px' src='" + imageUrl + "' />");
  23. $('#fldDeleteImage', page).show();
  24. $('#headerUploadNewImage', page).show();
  25. } else {
  26. $('#fldImage', page).hide().html('');
  27. $('#fldDeleteImage', page).hide();
  28. $('#headerUploadNewImage', page).hide();
  29. }
  30. Dashboard.hideLoadingMsg();
  31. });
  32. },
  33. deleteImage: function () {
  34. Dashboard.confirm("Are you sure you wish to delete the image?", "Delete Image", function (result) {
  35. if (result) {
  36. Dashboard.showLoadingMsg();
  37. var userId = getParameterByName("userId");
  38. ApiClient.deleteUserImage(userId, "primary").done(UserImagePage.processImageChangeResult);
  39. }
  40. });
  41. },
  42. processImageChangeResult: function () {
  43. Dashboard.hideLoadingMsg();
  44. Dashboard.validateCurrentUser();
  45. UserImagePage.reloadUser();
  46. },
  47. onFileUploadChange: function (fileUpload) {
  48. UserImagePage.setFiles(fileUpload.files);
  49. },
  50. setFiles: function (files) {
  51. var page = $.mobile.activePage;
  52. var file = files[0];
  53. if (!file || !file.type.match('image.*')) {
  54. $('#userImageOutput', page).html('');
  55. $('#fldUpload', page).hide();
  56. UserImagePage.currentFile = null;
  57. return;
  58. }
  59. UserImagePage.currentFile = file;
  60. var reader = new FileReader();
  61. reader.onerror = UserImagePage.onFileReaderError;
  62. reader.onloadstart = UserImagePage.onFileReaderOnloadStart;
  63. reader.onabort = UserImagePage.onFileReaderAbort;
  64. // Closure to capture the file information.
  65. reader.onload = (function (theFile) {
  66. return function (e) {
  67. // Render thumbnail.
  68. var html = ['<img style="max-width:500px;max-height:200px;" src="', e.target.result, '" title="', escape(theFile.name), '"/>'].join('');
  69. $('#userImageOutput', page).html(html);
  70. $('#fldUpload', page).show();
  71. };
  72. })(file);
  73. // Read in the image file as a data URL.
  74. reader.readAsDataURL(file);
  75. },
  76. onFileReaderError: function (evt) {
  77. Dashboard.hideLoadingMsg();
  78. switch (evt.target.error.code) {
  79. case evt.target.error.NOT_FOUND_ERR:
  80. Dashboard.showError('File Not Found!');
  81. break;
  82. case evt.target.error.NOT_READABLE_ERR:
  83. Dashboard.showError('File is not readable');
  84. break;
  85. case evt.target.error.ABORT_ERR:
  86. break; // noop
  87. default:
  88. Dashboard.showError('An error occurred reading this file.');
  89. };
  90. },
  91. onFileReaderOnloadStart: function (evt) {
  92. $('#fldUpload', $.mobile.activePage).hide();
  93. },
  94. onFileReaderAbort: function (evt) {
  95. Dashboard.hideLoadingMsg();
  96. Dashboard.showError('File read cancelled');
  97. },
  98. onSubmit: function () {
  99. var file = UserImagePage.currentFile;
  100. if (!file || !file.type.match('image.*')) {
  101. return false;
  102. }
  103. Dashboard.showLoadingMsg();
  104. var userId = getParameterByName("userId");
  105. ApiClient.uploadUserImage(userId, 'Primary', file).done(UserImagePage.processImageChangeResult);
  106. return false;
  107. },
  108. onImageDrop: function (e) {
  109. e.preventDefault();
  110. UserImagePage.setFiles(e.originalEvent.dataTransfer.files);
  111. return false;
  112. },
  113. onImageDragOver: function (e) {
  114. e.preventDefault();
  115. e.originalEvent.dataTransfer.dropEffect = 'Copy';
  116. return false;
  117. }
  118. };
  119. $(document).on('pageshow', "#userImagePage", UserImagePage.onPageShow).on('pagehide', "#userImagePage", UserImagePage.onPageHide);