header.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import { ReactiveCache } from '/imports/reactiveCache';
  2. Meteor.subscribe('user-admin');
  3. Meteor.subscribe('boards');
  4. Meteor.subscribe('setting');
  5. Meteor.subscribe('announcements');
  6. Template.header.onCreated(function(){
  7. const templateInstance = this;
  8. templateInstance.currentSetting = new ReactiveVar();
  9. templateInstance.isLoading = new ReactiveVar(false);
  10. Meteor.subscribe('setting', {
  11. onReady() {
  12. templateInstance.currentSetting.set(ReactiveCache.getCurrentSetting());
  13. let currSetting = templateInstance.currentSetting.curValue;
  14. if(currSetting && currSetting !== undefined && currSetting.customLoginLogoImageUrl !== undefined && document.getElementById("headerIsSettingDatabaseCallDone") != null)
  15. document.getElementById("headerIsSettingDatabaseCallDone").style.display = 'none';
  16. else if(document.getElementById("headerIsSettingDatabaseCallDone") != null)
  17. document.getElementById("headerIsSettingDatabaseCallDone").style.display = 'block';
  18. return this.stop();
  19. },
  20. });
  21. });
  22. Template.header.helpers({
  23. wrappedHeader() {
  24. return !Session.get('currentBoard');
  25. },
  26. hideLogo() {
  27. return Utils.isMiniScreen() && Session.get('currentBoard');
  28. },
  29. appIsOffline() {
  30. return !Meteor.status().connected;
  31. },
  32. hasAnnouncement() {
  33. const announcements = Announcements.findOne();
  34. return announcements && announcements.enabled;
  35. },
  36. announcement() {
  37. $('.announcement').show();
  38. const announcements = Announcements.findOne();
  39. return announcements && announcements.body;
  40. },
  41. zoomLevel() {
  42. const sessionZoom = Session.get('wekan-zoom-level');
  43. if (sessionZoom !== undefined) {
  44. return Math.round(sessionZoom * 100);
  45. }
  46. return Math.round(Utils.getZoomLevel() * 100);
  47. },
  48. mobileMode() {
  49. const sessionMode = Session.get('wekan-mobile-mode');
  50. if (sessionMode !== undefined) {
  51. return sessionMode;
  52. }
  53. return Utils.getMobileMode();
  54. },
  55. });
  56. Template.header.events({
  57. 'click .js-create-board': Popup.open('headerBarCreateBoard'),
  58. 'click .js-zoom-level-click'(evt) {
  59. const $zoomDisplay = $(evt.currentTarget).find('.zoom-display');
  60. const $zoomInput = $(evt.currentTarget).find('.zoom-input');
  61. // Hide display, show input
  62. $zoomDisplay.hide();
  63. $zoomInput.show().focus().select();
  64. },
  65. 'keypress .js-zoom-input'(evt) {
  66. if (evt.which === 13) { // Enter key
  67. const newZoomPercent = parseInt(evt.target.value);
  68. if (!isNaN(newZoomPercent) && newZoomPercent >= 50 && newZoomPercent <= 300) {
  69. const newZoom = newZoomPercent / 100;
  70. Utils.setZoomLevel(newZoom);
  71. // Hide input, show display
  72. const $zoomDisplay = $(evt.target).siblings('.zoom-display');
  73. const $zoomInput = $(evt.target);
  74. $zoomInput.hide();
  75. $zoomDisplay.show();
  76. } else {
  77. alert('Please enter a zoom level between 50% and 300%');
  78. evt.target.focus().select();
  79. }
  80. }
  81. },
  82. 'blur .js-zoom-input'(evt) {
  83. // When input loses focus, hide it and show display
  84. const $zoomDisplay = $(evt.target).siblings('.zoom-display');
  85. const $zoomInput = $(evt.target);
  86. $zoomInput.hide();
  87. $zoomDisplay.show();
  88. },
  89. 'click .js-mobile-mode-toggle'() {
  90. const currentMode = Utils.getMobileMode();
  91. Utils.setMobileMode(!currentMode);
  92. },
  93. 'click .js-close-announcement'() {
  94. $('.announcement').hide();
  95. },
  96. 'click .js-select-list'() {
  97. Session.set('currentList', this._id);
  98. Session.set('currentCard', null);
  99. },
  100. 'click .js-toggle-desktop-drag-handles'() {
  101. //currentUser = Meteor.user();
  102. //if (currentUser) {
  103. // Meteor.call('toggleDesktopDragHandles');
  104. //} else if (window.localStorage.getItem('showDesktopDragHandles')) {
  105. if (window.localStorage.getItem('showDesktopDragHandles')) {
  106. window.localStorage.removeItem('showDesktopDragHandles');
  107. location.reload();
  108. } else {
  109. window.localStorage.setItem('showDesktopDragHandles', 'true');
  110. location.reload();
  111. }
  112. },
  113. });
  114. Template.offlineWarning.events({
  115. 'click a.app-try-reconnect'(event) {
  116. event.preventDefault();
  117. Meteor.reconnect();
  118. },
  119. });