Здравствуйте коллеги! Подскажите пожалуйста, как можно вставить аудио плеер в реестр карточки звонков, что бы прослушать уже имеющуюся запись. Копал в сторону модуля AudioPlayer, но что то особо ничего хорошего не вышло.
Нравится
Пока нашел следующее решение, но если кто то знает более лучший способ, буду рад, если вы поделитесь!
Создаем замещающую схему CallPageV2 и добавляем туда в diff:
{ "operation": "insert", "parentName": "GeneralInfoTabGroup74451b35", "name": "AudioPlayer", "propertyName": "items", "values": { "itemType": Terrasoft.ViewItemType.CONTAINER, "generator": function() { return { "selectors": { "wrapEl": "#AudioPlayer", "iframeEl": "id_AudioPlayer" }, "className": "Terrasoft.HtmlControl", "html": "<audio style=\"display:none;\" controls=\"controls\"><source " + "src=\"\" type=\"audio/ogg\" /></audio>" }; }, "layout": { "colSpan": 12, "rowSpan": 1, "column": 0, "row": 0 } } }
(parentName замените на свой)
И в методы:
"generateAudioPlayer": function(audioUrl) { if (audioUrl.length >= 12) { var audioSource = document.querySelector("Source"); if (audioSource) { audioSource.src = audioUrl; var audioBlock = document.querySelector("audio"); audioBlock.style = "style=\"display:hidden;\""; } } }
Далее вызываем новый метод из инициализации карточки, передавая ему ссылку на наше аудио:
"onEntityInitialized": function() { this.callParent(arguments); var callAudioUrl = this.get("UsrAudio"); this.generateAudioPlayer(callAudioUrl); }
Добрый день, в вашем случае вы напрямую используете тэг audio из HTML. Также рекомендую вам посмотреть в сторону использования компонента Terrasoft.AudioPlayer. Пример использования можно увидеть в схеме CallSectionV2:
{ "operation": "insert", "name": "AudioPlayer", "parentName": "DataGrid", "propertyName": "activeRowActions", "index": 1, "values": { "className": "Terrasoft.AudioPlayer", "selectors": {"wrapEl": "#AudioPlayer"}, "sourceId": {"bindTo": "getSourceId"}, "sourceUrl": {"bindTo": "SourceUrl"}, "playbackended": {"bindTo": "onPlaybackEnded"}, "error": {"bindTo": "onPlayError"} } },
Также часть логики расположена в схеме CallSectionGridRowViewModel.