From 359849da8ae7cac9e1ad0b5d712e709aea79ead0 Mon Sep 17 00:00:00 2001 From: MAhsenArif Date: Tue, 23 Jan 2018 19:02:34 +0500 Subject: [PATCH 1/4] [IMPAC-757] Added radio mode for organization --- .../organizations.directive.coffee | 27 ++++++++++++++++--- .../organizations/organizations.less | 6 ++--- .../organizations/organizations.tmpl.html | 4 ++- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/components/widgets-settings/organizations/organizations.directive.coffee b/src/components/widgets-settings/organizations/organizations.directive.coffee index ff8c8a0c..def2222a 100644 --- a/src/components/widgets-settings/organizations/organizations.directive.coffee +++ b/src/components/widgets-settings/organizations/organizations.directive.coffee @@ -4,12 +4,25 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc) w = $scope.parentWidget w.selectedOrganizations = {} + + $scope.organizationMode ||= 'multiple' + mode = $scope.organizationMode + + multiOrgMode = -> mode == 'multiple' + + singleOrgMode = -> mode == 'single' + $scope.isOrganizationSelected = (orgUid) -> !!w.selectedOrganizations[orgUid] $scope.toggleSelectOrganization = (orgUid) -> - w.selectedOrganizations[orgUid] = !w.selectedOrganizations[orgUid] - $scope.onSelect({orgs: w.selectedOrganizations}) if angular.isDefined( $scope.onSelect ) + if multiOrgMode() + w.selectedOrganizations[orgUid] = !w.selectedOrganizations[orgUid] + $scope.onSelect({orgs: w.selectedOrganizations}) if angular.isDefined( $scope.onSelect ) + if singleOrgMode() + angular.forEach w.selectedOrganizations, (value, key) -> + w.selectedOrganizations[key] = false + w.selectedOrganizations[orgUid] = true # What will be passed to parentWidget setting = {} @@ -22,8 +35,15 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc) (config) -> $scope.dashboardOrganizations = config.currentDashboard.data_sources if w.metadata? && w.metadata.organization_ids? + # Note: For a widget in a dashboard multiple companies, we select the + # first company by default ONLY if the mode is radio. + count = 0 for org in $scope.dashboardOrganizations - w.selectedOrganizations[org.uid] = _.contains(w.metadata.organization_ids, org.uid) + orgSelection = _.contains(w.metadata.organization_ids, org.uid) + w.selectedOrganizations[org.uid] = orgSelection + if singleOrgMode() && orgSelection + w.selectedOrganizations[org.uid] = if count >= 1 then false else true + count += 1 setting.isInitialized = true ) @@ -46,6 +66,7 @@ module.directive('settingOrganizations', ($templateCache) -> restrict: 'A', scope: { parentWidget: '=' + organizationMode: '=?' deferred: '=' onSelect: '&?' }, diff --git a/src/components/widgets-settings/organizations/organizations.less b/src/components/widgets-settings/organizations/organizations.less index 44011ef4..2a438606 100644 --- a/src/components/widgets-settings/organizations/organizations.less +++ b/src/components/widgets-settings/organizations/organizations.less @@ -7,13 +7,13 @@ float: right; font-size: 20px; cursor: pointer; - &.fa-toggle-on { + &.fa-toggle-on, &.fa-check-circle { color: @impac-widget-link-color; } - &.fa-toggle-off { + &.fa-toggle-off, &.fa-circle-thin { color: @impac-widget-text-color-medium; } } } } -} \ No newline at end of file +} diff --git a/src/components/widgets-settings/organizations/organizations.tmpl.html b/src/components/widgets-settings/organizations/organizations.tmpl.html index 29c8f50f..72a73bf1 100644 --- a/src/components/widgets-settings/organizations/organizations.tmpl.html +++ b/src/components/widgets-settings/organizations/organizations.tmpl.html @@ -4,7 +4,9 @@
impac.widget.settings.organizations.select_companies
{{org.label}} - + + +
From 1ef5ba2c9490b5f85df2491168ced776c9f1dd24 Mon Sep 17 00:00:00 2001 From: MAhsenArif Date: Wed, 24 Jan 2018 19:39:01 +0500 Subject: [PATCH 2/4] [IMPAC-757] Updated structure to select dashboard company when switching from checkbox to radio --- .../organizations.directive.coffee | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/components/widgets-settings/organizations/organizations.directive.coffee b/src/components/widgets-settings/organizations/organizations.directive.coffee index def2222a..62cd767e 100644 --- a/src/components/widgets-settings/organizations/organizations.directive.coffee +++ b/src/components/widgets-settings/organizations/organizations.directive.coffee @@ -1,5 +1,5 @@ module = angular.module('impac.components.widgets-settings.organizations',[]) -module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc) -> +module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc, ImpacMainSvc) -> w = $scope.parentWidget w.selectedOrganizations = {} @@ -19,7 +19,7 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc) if multiOrgMode() w.selectedOrganizations[orgUid] = !w.selectedOrganizations[orgUid] $scope.onSelect({orgs: w.selectedOrganizations}) if angular.isDefined( $scope.onSelect ) - if singleOrgMode() + else if singleOrgMode() angular.forEach w.selectedOrganizations, (value, key) -> w.selectedOrganizations[key] = false w.selectedOrganizations[orgUid] = true @@ -34,16 +34,23 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc) ImpacDashboardsSvc.load().then( (config) -> $scope.dashboardOrganizations = config.currentDashboard.data_sources + if w.metadata? && w.metadata.organization_ids? - # Note: For a widget in a dashboard multiple companies, we select the - # first company by default ONLY if the mode is radio. count = 0 + widgetOrgIds = w.metadata.organization_ids + currentOrganization = ImpacMainSvc.config.currentOrganization + for org in $scope.dashboardOrganizations - orgSelection = _.contains(w.metadata.organization_ids, org.uid) + orgSelection = _.contains(widgetOrgIds, org.uid) w.selectedOrganizations[org.uid] = orgSelection - if singleOrgMode() && orgSelection - w.selectedOrganizations[org.uid] = if count >= 1 then false else true - count += 1 + if singleOrgMode() + if widgetOrgIds.length > 1 + w.selectedOrganizations[org.uid] = false + else if orgSelection + w.selectedOrganizations[org.uid] = if count >= 1 then false else true + count += 1 + if singleOrgMode() && widgetOrgIds.length > 1 + w.selectedOrganizations[currentOrganization.uid] = true setting.isInitialized = true ) From bff51cf1fcfe0f9ff32a2a2aec87ecd9cc6a0b27 Mon Sep 17 00:00:00 2001 From: MAhsenArif Date: Fri, 2 Feb 2018 17:59:47 +0500 Subject: [PATCH 3/4] [IMPAC-757] Refactored nested conditions --- .../organizations.directive.coffee | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/components/widgets-settings/organizations/organizations.directive.coffee b/src/components/widgets-settings/organizations/organizations.directive.coffee index 62cd767e..23cfe6dd 100644 --- a/src/components/widgets-settings/organizations/organizations.directive.coffee +++ b/src/components/widgets-settings/organizations/organizations.directive.coffee @@ -4,7 +4,6 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc, w = $scope.parentWidget w.selectedOrganizations = {} - $scope.organizationMode ||= 'multiple' mode = $scope.organizationMode @@ -12,6 +11,8 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc, singleOrgMode = -> mode == 'single' + resetSelectedOrgs = -> w.selectedOrganizations = _.mapValues(w.selectedOrganizations, -> false) + $scope.isOrganizationSelected = (orgUid) -> !!w.selectedOrganizations[orgUid] @@ -20,8 +21,7 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc, w.selectedOrganizations[orgUid] = !w.selectedOrganizations[orgUid] $scope.onSelect({orgs: w.selectedOrganizations}) if angular.isDefined( $scope.onSelect ) else if singleOrgMode() - angular.forEach w.selectedOrganizations, (value, key) -> - w.selectedOrganizations[key] = false + resetSelectedOrgs() w.selectedOrganizations[orgUid] = true # What will be passed to parentWidget @@ -36,21 +36,18 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc, $scope.dashboardOrganizations = config.currentDashboard.data_sources if w.metadata? && w.metadata.organization_ids? - count = 0 widgetOrgIds = w.metadata.organization_ids - currentOrganization = ImpacMainSvc.config.currentOrganization + if singleOrgMode() + resetSelectedOrgs() + if _.map(widgetOrgIds, -> true).length > 1 + currentOrganization = ImpacMainSvc.config.currentOrganization + w.selectedOrganizations[currentOrganization.uid] = true + else + w.selectedOrganizations[widgetOrgIds[0]] = true - for org in $scope.dashboardOrganizations - orgSelection = _.contains(widgetOrgIds, org.uid) - w.selectedOrganizations[org.uid] = orgSelection - if singleOrgMode() - if widgetOrgIds.length > 1 - w.selectedOrganizations[org.uid] = false - else if orgSelection - w.selectedOrganizations[org.uid] = if count >= 1 then false else true - count += 1 - if singleOrgMode() && widgetOrgIds.length > 1 - w.selectedOrganizations[currentOrganization.uid] = true + if multiOrgMode() + for org in $scope.dashboardOrganizations + w.selectedOrganizations[org.uid] = _.contains(widgetOrgIds, org.uid) setting.isInitialized = true ) From 42b48226c31ebd444ee19045fe63b6d14dbca6fe Mon Sep 17 00:00:00 2001 From: MAhsenArif Date: Tue, 6 Feb 2018 10:21:56 +0500 Subject: [PATCH 4/4] [IMPAC-757] Minimized block by adding guard statement and minor refactor --- .../organizations.directive.coffee | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/components/widgets-settings/organizations/organizations.directive.coffee b/src/components/widgets-settings/organizations/organizations.directive.coffee index 23cfe6dd..ccce47b6 100644 --- a/src/components/widgets-settings/organizations/organizations.directive.coffee +++ b/src/components/widgets-settings/organizations/organizations.directive.coffee @@ -35,20 +35,19 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc, (config) -> $scope.dashboardOrganizations = config.currentDashboard.data_sources - if w.metadata? && w.metadata.organization_ids? - widgetOrgIds = w.metadata.organization_ids - if singleOrgMode() - resetSelectedOrgs() - if _.map(widgetOrgIds, -> true).length > 1 - currentOrganization = ImpacMainSvc.config.currentOrganization - w.selectedOrganizations[currentOrganization.uid] = true - else - w.selectedOrganizations[widgetOrgIds[0]] = true - - if multiOrgMode() - for org in $scope.dashboardOrganizations - w.selectedOrganizations[org.uid] = _.contains(widgetOrgIds, org.uid) - setting.isInitialized = true + return unless w.metadata? && w.metadata.organization_ids? + widgetOrgIds = w.metadata.organization_ids + if singleOrgMode() + resetSelectedOrgs() + if widgetOrgIds.length > 1 + currentOrganization = ImpacMainSvc.config.currentOrganization + w.selectedOrganizations[currentOrganization.uid] = true + else + w.selectedOrganizations[widgetOrgIds[0]] = true + else if multiOrgMode() + for org in $scope.dashboardOrganizations + w.selectedOrganizations[org.uid] = _.contains(widgetOrgIds, org.uid) + setting.isInitialized = true ) setting.toMetadata = ->