From 4bd8923c6b93437b55417c8db189e7d59dbd2657 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Wed, 13 Dec 2023 15:10:33 -0500 Subject: [PATCH 01/14] make side bar dependant on inputs being present --- .../static/cloudcare/js/formplayer/menus/controller.js | 5 ++--- .../cloudcare/static/cloudcare/js/formplayer/menus/utils.js | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index 2e9c11e56c05..f6afe3fc8f3e 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -107,8 +107,8 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var showMenu = function (menuResponse) { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; - var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview; - + var queryResponse = menuResponse.queryResponse; + var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && queryResponse && queryResponse.displays.length; if (sidebarEnabled && menuResponse.type === "query") { var menuData = menusUtils.getMenuData(menuResponse); menuData["triggerEmptyCaseList"] = true; @@ -126,7 +126,6 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { FormplayerFrontend.regions.getRegion('persistentCaseTile').empty(); } - var queryResponse = menuResponse.queryResponse; if (sidebarEnabled && menuResponse.type === "entities" && queryResponse) { var queryCollection = new Collection(queryResponse.displays); FormplayerFrontend.regions.getRegion('sidebar').show( diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js index 2fd2c888cf17..3aced606c364 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js @@ -182,7 +182,7 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { if (searchText) { event = "Searched Case List"; } - if (menuResponse.queryResponse) { + if (menuResponse.queryResponse && menuResponse.queryResponse.displays.length) { menuData.sidebarEnabled = true; } var eventData = { From 1b8144fdb87454bb62d75e150d8df36c0fdaea28 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Wed, 13 Dec 2023 15:32:37 -0500 Subject: [PATCH 02/14] lint --- .../static/cloudcare/js/formplayer/menus/utils.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js index 3aced606c364..dd0314bcd17e 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js @@ -95,11 +95,11 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { if (langs && langs.length > 1) { langModels = _.map(langs, function (lang) { - let matchingLanguage = langCodeNameMapping[lang]; - return { - lang_code: lang, - lang_label: matchingLanguage ? matchingLanguage : lang, - }; + let matchingLanguage = langCodeNameMapping[lang]; + return { + lang_code: lang, + lang_label: matchingLanguage ? matchingLanguage : lang, + }; }); langCollection = new Backbone.Collection(langModels); } else { From 6c137acd7aedefed00f17f566816664080b2f7c8 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Wed, 13 Dec 2023 17:38:32 -0500 Subject: [PATCH 03/14] account for response type --- .../static/cloudcare/js/formplayer/menus/controller.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index f6afe3fc8f3e..7fe9e74612fa 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -108,7 +108,8 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; var queryResponse = menuResponse.queryResponse; - var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && queryResponse && queryResponse.displays.length; + const hasSearchInputs = menuResponse.type === "query" ? menuResponse.length > 0 : (menuResponse.queryResponse != null && menuResponse.queryResponse.displays.length > 0); + var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && hasSearchInputs; if (sidebarEnabled && menuResponse.type === "query") { var menuData = menusUtils.getMenuData(menuResponse); menuData["triggerEmptyCaseList"] = true; From 91c98f11a2c11b2047ab0abfeb2f7263b844668f Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 14 Dec 2023 11:47:09 -0500 Subject: [PATCH 04/14] use models length --- .../static/cloudcare/js/formplayer/menus/controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index 7fe9e74612fa..06856b98e236 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -108,7 +108,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; var queryResponse = menuResponse.queryResponse; - const hasSearchInputs = menuResponse.type === "query" ? menuResponse.length > 0 : (menuResponse.queryResponse != null && menuResponse.queryResponse.displays.length > 0); + const hasSearchInputs = menuResponse.type === "query" ? menuResponse.models.length > 0 : (menuResponse.queryResponse != null && menuResponse.queryResponse.displays.length > 0); var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && hasSearchInputs; if (sidebarEnabled && menuResponse.type === "query") { var menuData = menusUtils.getMenuData(menuResponse); From d5c5ddc31c98952f710e15f4a4d83637d65b6cb4 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 14 Dec 2023 11:51:44 -0500 Subject: [PATCH 05/14] lint --- .../static/cloudcare/js/formplayer/menus/controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index 06856b98e236..a35857dd8acd 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -108,7 +108,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; var queryResponse = menuResponse.queryResponse; - const hasSearchInputs = menuResponse.type === "query" ? menuResponse.models.length > 0 : (menuResponse.queryResponse != null && menuResponse.queryResponse.displays.length > 0); + const hasSearchInputs = menuResponse.type === "query" ? menuResponse.models.length > 0 : (menuResponse.queryResponse !== null && menuResponse.queryResponse.displays.length > 0); var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && hasSearchInputs; if (sidebarEnabled && menuResponse.type === "query") { var menuData = menusUtils.getMenuData(menuResponse); From 47a1c1342e5e12dc1796f29c3625e2728607b6a7 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 14 Dec 2023 11:55:41 -0500 Subject: [PATCH 06/14] use queryResponse var --- .../static/cloudcare/js/formplayer/menus/controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index a35857dd8acd..1ba39be0ed6d 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -108,7 +108,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; var queryResponse = menuResponse.queryResponse; - const hasSearchInputs = menuResponse.type === "query" ? menuResponse.models.length > 0 : (menuResponse.queryResponse !== null && menuResponse.queryResponse.displays.length > 0); + const hasSearchInputs = menuResponse.type === "query" ? menuResponse.models.length > 0 : (queryResponse !== null && queryResponse.displays.length > 0); var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && hasSearchInputs; if (sidebarEnabled && menuResponse.type === "query") { var menuData = menusUtils.getMenuData(menuResponse); From ad93496e47d1e695f9a88c4354e0482a6a6ba72d Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 14 Dec 2023 14:05:56 -0500 Subject: [PATCH 07/14] fix test failures --- .../static/cloudcare/js/formplayer/menus/controller.js | 2 +- .../js/formplayer/spec/split_screen_case_search_spec.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index 1ba39be0ed6d..b56ca3d7ec38 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -108,7 +108,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; var queryResponse = menuResponse.queryResponse; - const hasSearchInputs = menuResponse.type === "query" ? menuResponse.models.length > 0 : (queryResponse !== null && queryResponse.displays.length > 0); + const hasSearchInputs = menuResponse.type === "query" ? (menuResponse.models && menuResponse.models.length > 0) : (queryResponse && queryResponse.displays.length > 0); var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && hasSearchInputs; if (sidebarEnabled && menuResponse.type === "query") { var menuData = menusUtils.getMenuData(menuResponse); diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js index d70b6bb3cb32..e330d66bfccc 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js @@ -66,7 +66,7 @@ hqDefine("cloudcare/js/formplayer/spec/split_screen_case_search_spec", function }); it('should show sidebar and main regions with query type split screen case search', function () { - const responseWithTypeQuery = _.extend({}, splitScreenCaseListResponse, { 'type': 'query' }); + const responseWithTypeQuery = _.extend({}, splitScreenCaseListResponse, { 'type': 'query' , 'models': [{}]}); Controller.showMenu(responseWithTypeQuery); assert.isTrue(stubs.regions['sidebar'].show.called); @@ -74,7 +74,7 @@ hqDefine("cloudcare/js/formplayer/spec/split_screen_case_search_spec", function }); it('should explicitly set sidebarEnabled and triggerEmptyCaseList with query type split screen case search', function () { - const responseWithTypeQuery = _.extend({}, splitScreenCaseListResponse, { 'type': 'query' }); + const responseWithTypeQuery = _.extend({}, splitScreenCaseListResponse, { 'type': 'query', 'models': [{}] }); Controller.showMenu(responseWithTypeQuery); assert.isTrue(stubs.regions['main'].show.called); From ae5170f55c00c42051f55c792d722236cb477c0f Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 14 Dec 2023 14:32:38 -0500 Subject: [PATCH 08/14] refactor with new util method and consts --- .../cloudcare/js/formplayer/constants.js | 3 +++ .../js/formplayer/menus/controller.js | 11 +++++------ .../cloudcare/js/formplayer/menus/utils.js | 18 ++++++++++++++---- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/constants.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/constants.js index e3eae3ce4a95..111c83ad3c50 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/constants.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/constants.js @@ -26,6 +26,9 @@ hqDefine("cloudcare/js/formplayer/constants", function () { FORMAT_ADDRESS_POPUP: "AddressPopup", FORMAT_CLICKABLE_ICON: "ClickableIcon", + ENTITIES: "entities", + QUERY: "query", + SMALL_SCREEN_WIDTH_PX: 992, BREADCRUMB_HEIGHT_PX: 46.125, diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index b56ca3d7ec38..f8478ac7e960 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -108,9 +108,8 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; var queryResponse = menuResponse.queryResponse; - const hasSearchInputs = menuResponse.type === "query" ? (menuResponse.models && menuResponse.models.length > 0) : (queryResponse && queryResponse.displays.length > 0); - var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && hasSearchInputs; - if (sidebarEnabled && menuResponse.type === "query") { + var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && menusUtils.sidebarEnabled(menuResponse); + if (sidebarEnabled && menuResponse.type === constants.QUERY) { var menuData = menusUtils.getMenuData(menuResponse); menuData["triggerEmptyCaseList"] = true; menuData["sidebarEnabled"] = true; @@ -127,7 +126,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { FormplayerFrontend.regions.getRegion('persistentCaseTile').empty(); } - if (sidebarEnabled && menuResponse.type === "entities" && queryResponse) { + if (sidebarEnabled && menuResponse.type === constants.ENTITIES && queryResponse) { var queryCollection = new Collection(queryResponse.displays); FormplayerFrontend.regions.getRegion('sidebar').show( QueryListView({ @@ -139,7 +138,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { disableDynamicSearch: !sessionStorage.submitPerformed, }).render() ); - } else if (sidebarEnabled && menuResponse.type === "query") { + } else if (sidebarEnabled && menuResponse.type === constants.QUERY) { FormplayerFrontend.regions.getRegion('sidebar').show( QueryListView({ collection: menuResponse, @@ -161,7 +160,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { if (isFormEntry) { menusUtils.showMenuDropdown(menuResponse.langs, initialPageData('lang_code_name_mapping')); } - if (menuResponse.type === "entities") { + if (menuResponse.type === constants.ENTITIES) { menusUtils.showMenuDropdown(); } } diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js index dd0314bcd17e..2c2650e7e78b 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js @@ -7,7 +7,8 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { QueryView = hqImport("cloudcare/js/formplayer/menus/views/query"), toggles = hqImport("hqwebapp/js/toggles"), utils = hqImport("cloudcare/js/formplayer/utils/utils"), - views = hqImport("cloudcare/js/formplayer/menus/views"); + views = hqImport("cloudcare/js/formplayer/menus/views"), + constants = hqImport("cloudcare/js/formplayer/constants"); var recordPosition = function (position) { sessionStorage.locationLat = position.coords.latitude; @@ -155,6 +156,14 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { } }; + var sidebarEnabled = function (menuResponse) { + if (menuResponse.type === constants.QUERY) { + return menuResponse.models && menuResponse.models.length > 0; + } else if (menuResponse.type === constants.ENTITIES) { + return menuResponse.queryResponse && menuResponse.queryResponse.displays.length > 0; + } + } + var getMenuView = function (menuResponse) { var menuData = getMenuData(menuResponse); var urlObject = utils.currentUrlToObject(); @@ -162,7 +171,7 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { sessionStorage.queryKey = menuResponse.queryKey; if (menuResponse.type === "commands") { return views.MenuListView(menuData); - } else if (menuResponse.type === "query") { + } else if (menuResponse.type === constants.QUERY) { var props = { domain: FormplayerFrontend.getChannel().request('currentUser').domain, }; @@ -176,13 +185,13 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { forceManualSearch: false, }); return QueryView(menuData); - } else if (menuResponse.type === "entities") { + } else if (menuResponse.type === constants.ENTITIES) { var searchText = urlObject.search; var event = "Viewed Case List"; if (searchText) { event = "Searched Case List"; } - if (menuResponse.queryResponse && menuResponse.queryResponse.displays.length) { + if (sidebarEnabled(menuResponse)) { menuData.sidebarEnabled = true; } var eventData = { @@ -212,5 +221,6 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { showBreadcrumbs: showBreadcrumbs, showMenuDropdown: showMenuDropdown, startOrStopLocationWatching: startOrStopLocationWatching, + sidebarEnabled: sidebarEnabled, }; }); From d17c32a14a76c6ba7ba58c214a7ea0ee379879f1 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 14 Dec 2023 14:45:10 -0500 Subject: [PATCH 09/14] missing semicolon --- .../cloudcare/static/cloudcare/js/formplayer/menus/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js index 2c2650e7e78b..1ffa2c703301 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js @@ -162,7 +162,7 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { } else if (menuResponse.type === constants.ENTITIES) { return menuResponse.queryResponse && menuResponse.queryResponse.displays.length > 0; } - } + }; var getMenuView = function (menuResponse) { var menuData = getMenuData(menuResponse); From 96bcf01cee524c7e5e7da53d8b4e1573354301ab Mon Sep 17 00:00:00 2001 From: robert-costello Date: Fri, 15 Dec 2023 11:57:18 -0500 Subject: [PATCH 10/14] move toggle check to util --- .../static/cloudcare/js/formplayer/menus/controller.js | 2 +- .../cloudcare/static/cloudcare/js/formplayer/menus/utils.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index f8478ac7e960..33f49ab4101f 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -108,7 +108,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; var queryResponse = menuResponse.queryResponse; - var sidebarEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH') && !appPreview && menusUtils.sidebarEnabled(menuResponse); + var sidebarEnabled = !appPreview && menusUtils.sidebarEnabled(menuResponse); if (sidebarEnabled && menuResponse.type === constants.QUERY) { var menuData = menusUtils.getMenuData(menuResponse); menuData["triggerEmptyCaseList"] = true; diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js index 1ffa2c703301..283f9ae5e3f2 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js @@ -157,10 +157,11 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { }; var sidebarEnabled = function (menuResponse) { + const splitScreenCaseSearchEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH'); if (menuResponse.type === constants.QUERY) { - return menuResponse.models && menuResponse.models.length > 0; + return splitScreenCaseSearchEnabled && menuResponse.models && menuResponse.models.length > 0; } else if (menuResponse.type === constants.ENTITIES) { - return menuResponse.queryResponse && menuResponse.queryResponse.displays.length > 0; + return splitScreenCaseSearchEnabled && menuResponse.queryResponse && menuResponse.queryResponse.displays.length > 0; } }; From 289e1d0239b7f35d097977a321b5b6317bd9c06b Mon Sep 17 00:00:00 2001 From: robert-costello Date: Fri, 15 Dec 2023 12:17:04 -0500 Subject: [PATCH 11/14] lint (unused var) --- .../cloudcare/static/cloudcare/js/formplayer/menus/controller.js | 1 - 1 file changed, 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index 33f49ab4101f..357e3d5735dd 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -7,7 +7,6 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { formplayerUtils = hqImport("cloudcare/js/formplayer/utils/utils"), menusUtils = hqImport("cloudcare/js/formplayer/menus/utils"), views = hqImport("cloudcare/js/formplayer/menus/views"), - toggles = hqImport("hqwebapp/js/toggles"), QueryListView = hqImport("cloudcare/js/formplayer/menus/views/query"), initialPageData = hqImport("hqwebapp/js/initial_page_data").get, Collection = hqImport("cloudcare/js/formplayer/menus/collections"); From 2b3b4c2fdf5eb9cbd2f0ac2b6e7410aa0b1124a1 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Fri, 15 Dec 2023 14:27:28 -0500 Subject: [PATCH 12/14] rename function --- .../static/cloudcare/js/formplayer/menus/controller.js | 2 +- .../cloudcare/static/cloudcare/js/formplayer/menus/utils.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js index 357e3d5735dd..92674fc4912c 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/controller.js @@ -107,7 +107,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", function () { var menuListView = menusUtils.getMenuView(menuResponse); var appPreview = FormplayerFrontend.currentUser.displayOptions.singleAppMode; var queryResponse = menuResponse.queryResponse; - var sidebarEnabled = !appPreview && menusUtils.sidebarEnabled(menuResponse); + var sidebarEnabled = !appPreview && menusUtils.isSidebarEnabled(menuResponse); if (sidebarEnabled && menuResponse.type === constants.QUERY) { var menuData = menusUtils.getMenuData(menuResponse); menuData["triggerEmptyCaseList"] = true; diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js index 283f9ae5e3f2..4d62c0632d26 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/utils.js @@ -156,7 +156,7 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { } }; - var sidebarEnabled = function (menuResponse) { + var isSidebarEnabled = function (menuResponse) { const splitScreenCaseSearchEnabled = toggles.toggleEnabled('SPLIT_SCREEN_CASE_SEARCH'); if (menuResponse.type === constants.QUERY) { return splitScreenCaseSearchEnabled && menuResponse.models && menuResponse.models.length > 0; @@ -192,7 +192,7 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { if (searchText) { event = "Searched Case List"; } - if (sidebarEnabled(menuResponse)) { + if (isSidebarEnabled(menuResponse)) { menuData.sidebarEnabled = true; } var eventData = { @@ -222,6 +222,6 @@ hqDefine("cloudcare/js/formplayer/menus/utils", function () { showBreadcrumbs: showBreadcrumbs, showMenuDropdown: showMenuDropdown, startOrStopLocationWatching: startOrStopLocationWatching, - sidebarEnabled: sidebarEnabled, + isSidebarEnabled: isSidebarEnabled, }; }); From a0e8832e6d544896cd5ef560d0dc02af4c830ab0 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Mon, 18 Dec 2023 10:19:10 -0500 Subject: [PATCH 13/14] add tests --- .../spec/split_screen_case_search_spec.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js index e330d66bfccc..918376896c7a 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js @@ -83,6 +83,22 @@ hqDefine("cloudcare/js/formplayer/spec/split_screen_case_search_spec", function assert.isTrue(showMain.args[0].options.triggerEmptyCaseList); }); + it('should hide sidebar if there are no search inputs in query response', function () { + const responseWithTypeQuery = _.extend({}, splitScreenCaseListResponse, { 'type': 'query'}); + Controller.showMenu(responseWithTypeQuery); + + assert.isTrue(stubs.regions['sidebar'].empty.called); + }) + + it('should hide sidebar if there are no search inputs in entities response', function () { + let queryResponse = splitScreenCaseListResponse.queryResponse; + queryResponse = _.extend({}, queryResponse, {'displays': {}}); + const responseWithTypeQuery = _.extend({}, splitScreenCaseListResponse, {'queryResponse': queryResponse}); + Controller.showMenu(responseWithTypeQuery); + + assert.isTrue(stubs.regions['sidebar'].empty.called); + }) + it('should empty sidebar if in app preview', function () { FormplayerFrontend.currentUser.displayOptions.singleAppMode = true; Controller.showMenu(splitScreenCaseListResponse); From e88d2e2049ac9bbba423e37371019cdf9a6acb28 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Mon, 18 Dec 2023 10:35:23 -0500 Subject: [PATCH 14/14] lint --- .../js/formplayer/spec/split_screen_case_search_spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js index 918376896c7a..43c64760082a 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/spec/split_screen_case_search_spec.js @@ -88,7 +88,7 @@ hqDefine("cloudcare/js/formplayer/spec/split_screen_case_search_spec", function Controller.showMenu(responseWithTypeQuery); assert.isTrue(stubs.regions['sidebar'].empty.called); - }) + }); it('should hide sidebar if there are no search inputs in entities response', function () { let queryResponse = splitScreenCaseListResponse.queryResponse; @@ -97,7 +97,7 @@ hqDefine("cloudcare/js/formplayer/spec/split_screen_case_search_spec", function Controller.showMenu(responseWithTypeQuery); assert.isTrue(stubs.regions['sidebar'].empty.called); - }) + }); it('should empty sidebar if in app preview', function () { FormplayerFrontend.currentUser.displayOptions.singleAppMode = true;