diff --git a/webapp/src/cljc/lipas/data/ptv.cljc b/webapp/src/cljc/lipas/data/ptv.cljc index 7bd323b93..9c95e0ace 100644 --- a/webapp/src/cljc/lipas/data/ptv.cljc +++ b/webapp/src/cljc/lipas/data/ptv.cljc @@ -62,10 +62,11 @@ ;; For UI org dropdown (def orgs - (mapv (fn [x] - {:name (:name x) - :prod (:prod x) - :id (:org-id (:props x))}) + (mapv (fn [org] + {:name (:name org) + :prod (:prod org) + :id (:org-id (:props org)) + :city-codes (:city-codes (:props org))}) organizations)) (def lang->locale diff --git a/webapp/src/cljs/lipas/ui/ptv/site_view.cljs b/webapp/src/cljs/lipas/ui/ptv/site_view.cljs index 4dc90a12f..f9d415a08 100644 --- a/webapp/src/cljs/lipas/ui/ptv/site_view.cljs +++ b/webapp/src/cljs/lipas/ui/ptv/site_view.cljs @@ -112,11 +112,6 @@ "Luo palvelu")) ))) -(def orgs - (if (prod?) - (filterv :prod ptv-data/orgs) - (filterv #(not (:prod %)) ptv-data/orgs))) - (defui site-view [{:keys [tr lipas-id can-edit? edit-data]}] (let [[selected-tab set-selected-tab] (uix/use-state :fi) locale (tr) @@ -134,6 +129,8 @@ ;; _ (js/console.log edit-data sports-site) {:keys [org-id sync-enabled delete-existing last-sync publishing-status]} (:ptv site) + + orgs (use-subscribe [::subs/users-orgs]) org-languages (ptv-data/org-id->languages org-id) ;; _ (js/console.log org-id) @@ -219,7 +216,7 @@ (map (fn [{:keys [name id]}] {:label name :value id})))) - [])] + [orgs])] ($ autocomplete2 {:options options :disabled (or loading? diff --git a/webapp/src/cljs/lipas/ui/ptv/subs.cljs b/webapp/src/cljs/lipas/ui/ptv/subs.cljs index 0ea389839..253a8222c 100644 --- a/webapp/src/cljs/lipas/ui/ptv/subs.cljs +++ b/webapp/src/cljs/lipas/ui/ptv/subs.cljs @@ -2,7 +2,8 @@ (:require [clojure.string :as str] [lipas.data.ptv :as ptv-data] [lipas.data.types :as types] - [lipas.ui.utils :as utils] + [lipas.ui.utils :as utils :refer [prod?]] + [lipas.roles :as roles] [re-frame.core :as rf])) (rf/reg-sub ::ptv @@ -51,6 +52,21 @@ (fn [[loading-from-ptv? loading-from-lipas?] _] (or loading-from-ptv? loading-from-lipas?))) +(def orgs + (if (prod?) + (filterv :prod ptv-data/orgs) + (filterv #(not (:prod %)) ptv-data/orgs))) + +(rf/reg-sub ::users-orgs + :<- [:lipas.ui.user.subs/user-data] + (fn [user-data _] + (filterv (fn [{:keys [city-codes :as _org]}] + (some + (fn [city-code] + (roles/check-privilege user-data {:city-code city-code} :ptv/manage)) + city-codes)) + orgs))) + (rf/reg-sub ::selected-org :<- [::ptv] (fn [ptv _] diff --git a/webapp/src/cljs/lipas/ui/ptv/views.cljs b/webapp/src/cljs/lipas/ui/ptv/views.cljs index 34fd19088..9b33d3be3 100644 --- a/webapp/src/cljs/lipas/ui/ptv/views.cljs +++ b/webapp/src/cljs/lipas/ui/ptv/views.cljs @@ -30,7 +30,7 @@ [lipas.ui.ptv.events :as events] [lipas.ui.ptv.subs :as subs] [lipas.ui.uix.hooks :refer [use-subscribe]] - [lipas.ui.utils :refer [<== ==> prod?]] + [lipas.ui.utils :refer [<== ==>]] [re-frame.core :as rf] [reagent.core :as r] [uix.core :as uix :refer [$ defui]])) @@ -55,14 +55,10 @@ (when (contains? opts "en") [mui/tab {:value "en" :label "EN" :disabled (not (contains? opts "en"))}])])) -(def orgs - (if (prod?) - (filterv :prod ptv-data/orgs) - (filterv #(not (:prod %)) ptv-data/orgs))) - (defn org-selector [{:keys [label]}] - (let [selected-org (<== [::subs/selected-org])] + (let [orgs (<== [::subs/users-orgs]) + selected-org (<== [::subs/selected-org])] [lui/select {:items orgs :label label