{{! Add the a11y route announcer }} {{! Tell CSS what we have enabled }} {{#if (can "use acls")}} {{document-attrs class="has-acls"}} {{/if}} {{#if (can "use nspaces")}} {{document-attrs class="has-nspaces"}} {{/if}} {{#if (can "use partitions")}} {{document-attrs class="has-partitions"}} {{/if}} {{! Listen out for blocking query/client setting changes }} {{! Tell CSS about our theme }} {{#each-in source.data as |key value|}} {{#if (and value (contains key (array "color-scheme" "contrast")))}} {{document-attrs class=(concat 'prefers-' key '-' value)}} {{/if}} {{/each-in}} {{! If ACLs are enabled try get a token }} {{#if (can "use acls")}} {{/if}} {{#if (not-eq route.currentName 'oauth-provider-debug')}} {{! redirect if we aren't on a URL with dc information }} {{#if (eq route.currentName 'index')}} {{! until we get to the dc route we don't know any permissions }} {{! as we don't know the dc, any inital permission based }} {{! redirects are in the dc.show route}} {{did-insert (route-action 'replaceWith' 'dc.show' (hash dc=(env 'CONSUL_DATACENTER_LOCAL') ) )}} {{else}} {{! If we are notfound, guess the params we need }} {{#if (eq route.currentName 'notfound')}} {{/if}} {{! Make sure we guess and default to the right params when not found }} {{#let (if (can "use partitions") (or route.params.partition notfound.partition token.Partition '') '') (if (can "use nspaces") (or route.params.nspace notfound.nspace token.Namespace '') '') as |partition nspace|}} {{! Make sure we have enough to show the app chrome}} {{! Don't show anything until we have a list of DCs }} {{! Once we have a list of DCs make sure the DC we are asking for exists }} {{! If not use the DC that the UI is running in }} {{#let (or (if nofound.dc (object-at 0 (cached-model 'dc' (hash Name=notfound.dc ) ) ) ) (object-at 0 (cached-model 'dc' (hash Name=route.params.dc ) ) ) (hash Name=(env "CONSUL_DATACENTER_LOCAL") ) ) dcs.data as |dc dcs|}} {{#if (and (gt dc.Name.length 0) dcs)}} {{! figure out our current DC and convert it to a model }} {{#if dc.data}} {{#if error}} {{! If we got an error from anything, show an error page }} {{else}} {{! Otherwise show the rest of the app}} {{outlet}} {{! loading component for when we need it}} {{/if}} {{/if}} {{/if}} {{/let}} {{/let}} {{/if}} {{else}} {{! Routes with no main navigation }} {{outlet}} {{/if}}