Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

SettingsMenu.js 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /* global APP, $ */
  2. import UIUtil from "../../util/UIUtil";
  3. import UIEvents from "../../../../service/UI/UIEvents";
  4. import languages from "../../../../service/translation/languages";
  5. import Settings from '../../../settings/Settings';
  6. function generateLanguagesSelectBox() {
  7. var currentLang = APP.translation.getCurrentLanguage();
  8. var html = '<select id="languages_selectbox">';
  9. var langArray = languages.getLanguages();
  10. for(var i = 0; i < langArray.length; i++) {
  11. var lang = langArray[i];
  12. html += "<option ";
  13. if(lang === currentLang)
  14. html += "selected ";
  15. html += "value=\"" + lang + "\" data-i18n='languages:" + lang + "'>";
  16. html += "</option>";
  17. }
  18. return html + "</select>";
  19. }
  20. function generateDevicesOptions(items, selectedId) {
  21. return items.map(function (item) {
  22. let attrs = {
  23. value: item.deviceId
  24. };
  25. if (item.deviceId === selectedId) {
  26. attrs.selected = 'selected';
  27. }
  28. let attrsStr = UIUtil.attrsToString(attrs);
  29. return `<option ${attrsStr}>${item.label}</option>`;
  30. }).join('\n');
  31. }
  32. export default {
  33. init (emitter) {
  34. function update() {
  35. let displayName = $('#setDisplayName').val();
  36. emitter.emit(UIEvents.NICKNAME_CHANGED, displayName);
  37. let language = $("#languages_selectbox").val();
  38. if (language !== Settings.getLanguage()) {
  39. emitter.emit(UIEvents.LANG_CHANGED, language);
  40. }
  41. let email = UIUtil.escapeHtml($('#setEmail').val());
  42. if (email !== Settings.getEmail()) {
  43. emitter.emit(UIEvents.EMAIL_CHANGED, email);
  44. }
  45. let startAudioMuted = $("#startAudioMuted").is(":checked");
  46. let startVideoMuted = $("#startVideoMuted").is(":checked");
  47. if (startAudioMuted !== APP.conference.startAudioMuted
  48. || startVideoMuted !== APP.conference.startVideoMuted) {
  49. emitter.emit(
  50. UIEvents.START_MUTED_CHANGED,
  51. startAudioMuted,
  52. startVideoMuted
  53. );
  54. }
  55. let cameraDeviceId = $('#selectCamera').val();
  56. if (cameraDeviceId !== Settings.getCameraDeviceId()) {
  57. emitter.emit(UIEvents.VIDEO_DEVICE_CHANGED, cameraDeviceId);
  58. }
  59. let micDeviceId = $('#selectMic').val();
  60. if (micDeviceId !== Settings.getMicDeviceId()) {
  61. emitter.emit(UIEvents.AUDIO_DEVICE_CHANGED, micDeviceId);
  62. }
  63. }
  64. let startMutedBlock = $("#startMutedOptions");
  65. startMutedBlock.before(generateLanguagesSelectBox());
  66. APP.translation.translateElement($("#languages_selectbox"));
  67. this.onAvailableDevicesChanged();
  68. this.onRoleChanged();
  69. this.onStartMutedChanged();
  70. $("#updateSettings").click(update);
  71. $('#settingsmenu>input').keyup(function(event){
  72. if (event.keyCode === 13) {//enter
  73. update();
  74. }
  75. });
  76. },
  77. onRoleChanged () {
  78. if(APP.conference.isModerator) {
  79. $("#startMutedOptions").css("display", "block");
  80. }
  81. else {
  82. $("#startMutedOptions").css("display", "none");
  83. }
  84. },
  85. onStartMutedChanged () {
  86. $("#startAudioMuted").attr("checked", APP.conference.startAudioMuted);
  87. $("#startVideoMuted").attr("checked", APP.conference.startVideoMuted);
  88. },
  89. isVisible () {
  90. return $('#settingsmenu').is(':visible');
  91. },
  92. onDisplayNameChange (id, newDisplayName) {
  93. if(id === 'localVideoContainer' || APP.conference.isLocalId(id)) {
  94. $('#setDisplayName').val(newDisplayName);
  95. }
  96. },
  97. changeAvatar (avatarUrl) {
  98. $('#avatar').attr('src', avatarUrl);
  99. },
  100. onAvailableDevicesChanged () {
  101. let devices = APP.conference.availableDevices;
  102. if (!devices.length) {
  103. $('#devicesOptions').hide();
  104. return;
  105. }
  106. let audio = devices.filter(device => device.kind === 'audioinput');
  107. let video = devices.filter(device => device.kind === 'videoinput');
  108. $('#selectCamera').html(
  109. generateDevicesOptions(video, Settings.getCameraDeviceId())
  110. );
  111. $('#selectMic').html(
  112. generateDevicesOptions(audio, Settings.getMicDeviceId())
  113. );
  114. $('#devicesOptions').show();
  115. }
  116. };