diff --git a/src/components/widgets-settings/organizations/organizations.directive.coffee b/src/components/widgets-settings/organizations/organizations.directive.coffee index ff8c8a0c..ccce47b6 100644 --- a/src/components/widgets-settings/organizations/organizations.directive.coffee +++ b/src/components/widgets-settings/organizations/organizations.directive.coffee @@ -1,15 +1,28 @@ 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 = {} + $scope.organizationMode ||= 'multiple' + mode = $scope.organizationMode + + multiOrgMode = -> mode == 'multiple' + + singleOrgMode = -> mode == 'single' + + resetSelectedOrgs = -> w.selectedOrganizations = _.mapValues(w.selectedOrganizations, -> false) + $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 ) + else if singleOrgMode() + resetSelectedOrgs() + w.selectedOrganizations[orgUid] = true # What will be passed to parentWidget setting = {} @@ -21,10 +34,20 @@ module.controller('SettingOrganizationsCtrl', ($scope, $log, ImpacDashboardsSvc) ImpacDashboardsSvc.load().then( (config) -> $scope.dashboardOrganizations = config.currentDashboard.data_sources - if w.metadata? && w.metadata.organization_ids? + + 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(w.metadata.organization_ids, org.uid) - setting.isInitialized = true + w.selectedOrganizations[org.uid] = _.contains(widgetOrgIds, org.uid) + setting.isInitialized = true ) setting.toMetadata = -> @@ -46,6 +69,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}} - + + +