From 2653fb8e41460f488754415beaaba80a7449de46 Mon Sep 17 00:00:00 2001 From: Moe Date: Tue, 9 Nov 2021 08:26:58 -0800 Subject: [PATCH] allow monitor grouping from simple monitor settings --- web/assets/js/bs5.accountSettings.js | 5 +- web/assets/js/bs5.monitorsUtils.js | 78 +++++++++++++++++++++------- 2 files changed, 63 insertions(+), 20 deletions(-) diff --git a/web/assets/js/bs5.accountSettings.js b/web/assets/js/bs5.accountSettings.js index b875c8c0..2e9d50c2 100644 --- a/web/assets/js/bs5.accountSettings.js +++ b/web/assets/js/bs5.accountSettings.js @@ -30,8 +30,11 @@ $(document).ready(function(){ function writewMonGroups(){ theForm.find('[detail="mon_groups"]').val(JSON.stringify($user.mon_groups)).change() } + window.getMonitorGroups = function(){ + return $user.mon_groups ? $user.mon_groups : safeJsonParse($user.details.mon_groups) + } window.reDrawMonGroupsInAccountSettings = function(){ - $user.mon_groups = $user.mon_groups ? $user.mon_groups : safeJsonParse($user.details.mon_groups) + $user.mon_groups = getMonitorGroups() var monitorList = Object.values($user.mon_groups).map(function(item){ return { value: item.id, diff --git a/web/assets/js/bs5.monitorsUtils.js b/web/assets/js/bs5.monitorsUtils.js index e239d629..c4d53799 100644 --- a/web/assets/js/bs5.monitorsUtils.js +++ b/web/assets/js/bs5.monitorsUtils.js @@ -684,7 +684,7 @@ function magnifyStream(options){ function getCardMonitorSettingsFields(formElement){ var formValues = {}; formValues.details = {} - $.each(['name','detail'],function(n,keyType){ + $.each(['name','detail','monitor-groups-selected'],function(n,keyType){ formElement.find(`[${keyType}]`).each(function(n,v){ var el = $(v); var key = el.attr(keyType) @@ -697,6 +697,9 @@ function getCardMonitorSettingsFields(formElement){ case'detail': formValues.details[key] = value; break; + case'monitor-groups-selected': + formValues.details.groups = value; + break; case'name': formValues[key] = value; break; @@ -708,7 +711,6 @@ function getCardMonitorSettingsFields(formElement){ } }) }) - console.log(formValues) return formValues; } function updateMonitor(monitorToPost,callback){ @@ -736,7 +738,23 @@ var miniCardSettingsFields = [ value: monitorAlreadyAdded.details.detector_pam || '0', fieldType: 'toggle', } - } + }, + function(monitorAlreadyAdded){ + var monitorGroups = Object.values($user.mon_groups).map(function(item){ + return { + value: item.id, + name: item.name, + selected: monitorAlreadyAdded.details.groups.indexOf(item.id) > -1, + } + }); + return { + label: lang['Grouping'], + name: `monitor-groups-selected="${monitorAlreadyAdded.mid}"`, + fieldType: 'select', + attributes: 'multiple', + possible: monitorGroups, + } + }, ] function buildMiniMonitorCardBody(monitorAlreadyAdded,monitorConfigPartial,additionalInfo,doOpenVideosInsteadOfDelete){ if(!monitorConfigPartial)monitorConfigPartial = monitorAlreadyAdded; @@ -758,21 +776,40 @@ function buildMiniMonitorCardBody(monitorAlreadyAdded,monitorConfigPartial,addit ` $.each(([]).concat(miniCardSettingsFields),function(n,option){ option = typeof option === 'function' ? option(monitorAlreadyAdded,monitorConfigPartial,additionalInfo,doOpenVideosInsteadOfDelete) : option - monitorSettingsHtml += `
-
- ${option.label} -
-
` - switch(option.fieldType){ - case'toggle': - monitorSettingsHtml += `` - break; - } - monitorSettingsHtml += `
-
` + var newFieldHtml = ''; + if((['div']).indexOf(option.fieldType) > -1){ + switch(option.fieldType){ + case'div': + newFieldHtml += `
${option.divContent || ''}
` + break; + } + }else{ + newFieldHtml += `
+
+ ${option.label} +
+
` + switch(option.fieldType){ + case'toggle': + newFieldHtml += `` + break; + case'select': + newFieldHtml += `` + break; + } + newFieldHtml += `
+
` + } + monitorSettingsHtml += newFieldHtml; }) monitorSettingsHtml += `