diff --git a/definitions/base.js b/definitions/base.js
index 8a09cde7..0a741656 100644
--- a/definitions/base.js
+++ b/definitions/base.js
@@ -977,8 +977,7 @@ module.exports = function(s,config,lang){
"description": lang["fieldTextStreamQuality"],
"default": "15",
"example": "1",
- "form-group-class-pre-layer": "h_hls_v_input h_hls_v_libx264 h_hls_v_libx265 h_hls_v_h264_nvenc h_hls_v_hevc_nvenc h_hls_v_no",
- "form-group-class": "h_st_input h_st_mjpeg h_st_b64 h_st_hls h_st_gif h_st_flv h_st_mp4",
+ uiVisibilityConditions: 'streamSectionCopyModeVisibilities',
"possible": "1-23"
},
{
@@ -987,8 +986,7 @@ module.exports = function(s,config,lang){
"description": lang["fieldTextStreamFps"],
"default": "",
"example": "1",
- "form-group-class-pre-layer": "h_hls_v_input h_hls_v_libx264 h_hls_v_libx265 h_hls_v_h264_nvenc h_hls_v_hevc_nvenc h_hls_v_no",
- "form-group-class": "h_st_input h_st_mjpeg h_st_b64 h_st_hls h_st_gif h_st_flv h_st_mp4",
+ uiVisibilityConditions: 'streamSectionCopyModeVisibilities',
"possible": ""
},
{
@@ -999,8 +997,7 @@ module.exports = function(s,config,lang){
"fieldType": "number",
"numberMin": "1",
"example": "640",
- "form-group-class-pre-layer": "h_hls_v_input h_hls_v_libx264 h_hls_v_libx265 h_hls_v_h264_nvenc h_hls_v_hevc_nvenc h_hls_v_no",
- "form-group-class": "h_st_input h_st_mjpeg h_st_b64 h_st_hls h_st_gif h_st_flv h_st_mp4",
+ uiVisibilityConditions: 'streamSectionCopyModeVisibilities',
"possible": ""
},
{
@@ -1011,8 +1008,7 @@ module.exports = function(s,config,lang){
"fieldType": "number",
"numberMin": "1",
"example": "480",
- "form-group-class-pre-layer": "h_hls_v_input h_hls_v_libx264 h_hls_v_libx265 h_hls_v_h264_nvenc h_hls_v_hevc_nvenc h_hls_v_no",
- "form-group-class": "h_st_input h_st_mjpeg h_st_b64 h_st_hls h_st_gif h_st_flv h_st_mp4",
+ uiVisibilityConditions: 'streamSectionCopyModeVisibilities',
"possible": ""
},
{
@@ -1022,8 +1018,7 @@ module.exports = function(s,config,lang){
"default": "",
"example": "",
"fieldType": "select",
- "form-group-class-pre-layer": "h_hls_v_input h_hls_v_libx264 h_hls_v_libx265 h_hls_v_h264_nvenc h_hls_v_hevc_nvenc h_hls_v_no",
- "form-group-class": "h_st_input h_st_mjpeg h_st_b64 h_st_hls h_st_gif h_st_flv h_st_mp4",
+ uiVisibilityConditions: 'streamSectionCopyModeVisibilities',
"possible": [
{
"name": lang["No Rotation"],
@@ -1086,8 +1081,7 @@ module.exports = function(s,config,lang){
"description": lang["fieldTextStreamVf"],
"default": "",
"example": "",
- "form-group-class-pre-layer": "h_hls_v_input h_hls_v_libx264 h_hls_v_libx265 h_hls_v_h264_nvenc h_hls_v_hevc_nvenc h_hls_v_no",
- "form-group-class": "h_st_input h_st_mjpeg h_st_b64 h_st_hls h_st_gif h_st_flv h_st_mp4",
+ uiVisibilityConditions: 'streamSectionCopyModeVisibilities',
"possible": ""
},
{
@@ -1298,13 +1292,13 @@ module.exports = function(s,config,lang){
"Substream": {
"name": lang['Substream'],
"color": "blue",
- isAdvanced: true,
"isSection": true,
"id": "monSectionSubstream",
"blockquote": lang.substreamText,
"blockquoteClass": 'global_tip',
"info": [
{
+ isAdvanced: true,
"name": lang['Connection'],
"color": "orange",
id: "monSectionSubstreamInput",
diff --git a/web/assets/js/bs5.monitorSettings.js b/web/assets/js/bs5.monitorSettings.js
index 64b7576a..8c7cf6bb 100644
--- a/web/assets/js/bs5.monitorSettings.js
+++ b/web/assets/js/bs5.monitorSettings.js
@@ -436,12 +436,12 @@ function getAdditionalStreamChannelFields(tempID,channelId){
}
addOnTabOpen('monitorSettings', function () {
- triggerSecondaryHideCheckOnAll()
+ setFieldVisibility()
drawMonitorSettingsSubMenu()
})
addOnTabReopen('monitorSettings', function () {
- triggerSecondaryHideCheckOnAll()
+ setFieldVisibility()
drawMonitorSettingsSubMenu()
})
function drawInputMapHtml(options){
@@ -674,7 +674,7 @@ function importIntoMonitorEditor(options){
}
})
monitorsForCopy.find('optgroup').html(tmp)
- triggerSecondaryHideCheckOnAll()
+ setFieldVisibility()
drawMonitorSettingsSubMenu()
}
//parse "Automatic" field in "Input" Section
@@ -896,27 +896,65 @@ var showInputMappingFields = function(showMaps){
}else{
el.hide()
}
- triggerSecondaryHideCheckOnAll()
+ setFieldVisibility()
drawMonitorSettingsSubMenu()
}
-var triggerSecondaryHideCheck = function(el){
- var key = el.attr('selector')
- var value = el.val();
- var triggerChange = el.attr('triggerchange')
- var triggerChangeIgnore = el.attr('triggerChangeIgnore')
- editorForm.find('.' + key + '_input').hide()
- editorForm.find('.' + key + '_' + value).show();
- editorForm.find('.' + key + '_text').text($(this).find('option:selected').text())
- if(triggerChange && triggerChange !== '' && !triggerChangeIgnore || (triggerChangeIgnore && triggerChangeIgnore.split(',').indexOf(value) === -1)){
- console.log(triggerChange)
- $(triggerChange).trigger('change')
+function setFieldVisibilityNewWay(){
+ var validation = getMonitorEditFormFields()
+ if(!validation.ok){
+ return console.log('Failed setFieldVisibilityNewWay',new Error())
+ }
+ var monitorConfig = validation.monitorConfig
+ var monitorDetails = safeJsonParse(monitorConfig.details)
+ var commonChecks = {
+ streamSectionCopyModeVisibilities: `monitorDetails.stream_vcodec === 'libx264' ||
+ monitorDetails.stream_vcodec === 'libx265' ||
+ monitorDetails.stream_vcodec === 'h264_nvenc' ||
+ monitorDetails.stream_vcodec === 'hevc_nvenc' ||
+ monitorDetails.stream_vcodec === 'no' ||
+
+ monitorDetails.stream_type === 'mjpeg' ||
+ monitorDetails.stream_type === 'b64' ||
+ ((monitorDetails.stream_type === 'hls' || monitorDetails.stream_type === 'mp4') && monitorDetails.stream_vcodec !== 'copy') ||
+ monitorDetails.stream_type === 'gif' ||
+ monitorDetails.stream_type === 'flv'`
+ }
+ editorForm.find('[visibility-conditions]').each(function(n,v){
+ var el = $(v)
+ var visibilityConditions = el.attr('visibility-conditions')
+ var response = true
+ var commonCheck = commonChecks[visibilityConditions]
+ if(commonCheck){
+ response = eval(commonCheck)
+ }else{
+ response = eval(visibilityConditions)
+ }
+ if(response){
+ el.show()
+ }else{
+ el.hide()
+ }
+ })
+}
+function setFieldVisibilityOldWay(formElement){
+ var listToShow = []
+ formElement.find('[selector]').each(function(n,v){
+ var el = $(this)
+ var keyName = el.attr('selector')
+ var value = el.val()
+ var toShow = `${keyName}_${value}`
+ listToShow.push(toShow)
+ formElement.find(`.${keyName}_input`).hide()
+ })
+ for (let i = 0; i < listToShow.length; i++) {
+ var item = listToShow[i];
+ var elements = formElement.find(`[class*="${item}"]`)
+ elements.show()
}
}
-var triggerSecondaryHideCheckOnAll = function(){
- monitorEditorWindow.find('[selector]').each(function(){
- var el = $(this);
- triggerSecondaryHideCheck(el)
- })
+function setFieldVisibility(){
+ setFieldVisibilityOldWay(editorForm)
+ setFieldVisibilityNewWay()
}
monitorStreamChannels.on('click','.delete',function(){
$(this).parents('.stream-channel').remove()
@@ -1034,7 +1072,8 @@ editorForm.find('[detail]').change(function(){
})
editorForm.on('change','[selector]',function(){
var el = $(this);
- triggerSecondaryHideCheck(el)
+ onSelectorChange(el,editorForm)
+ setFieldVisibilityNewWay()
drawMonitorSettingsSubMenu()
});
editorForm.find('[name="type"]').change(function(e){
@@ -1072,7 +1111,7 @@ editorForm.find('[name="type"]').change(function(e){
$('.shinobi-detector_name').empty()
$('.shinobi-detector_plug').hide()
$('.shinobi-detector-invert').show()
- triggerSecondaryHideCheckOnAll()
+ setFieldVisibility()
drawMonitorSettingsSubMenu()
}else{
var pluginTitle = []
@@ -1088,7 +1127,7 @@ editorForm.find('[name="type"]').change(function(e){
$('.shinobi-detector-invert').hide()
$('.shinobi-detector_name').text(pluginTitle.join(', '))
if(pluginNotice.length > 0)$('.shinobi-detector-msg').text(pluginNotice.join('
'))
- triggerSecondaryHideCheckOnAll()
+ setFieldVisibility()
drawMonitorSettingsSubMenu()
}
}
diff --git a/web/pages/blocks/home/fieldBuilders.ejs b/web/pages/blocks/home/fieldBuilders.ejs
index bb6d496b..9b4f3e7a 100644
--- a/web/pages/blocks/home/fieldBuilders.ejs
+++ b/web/pages/blocks/home/fieldBuilders.ejs
@@ -294,7 +294,7 @@ drawBlock = function(monitorSettings){
<% }
%>
<% }else{ %>
-