diff --git a/components/centraldashboard/app/api.ts b/components/centraldashboard/app/api.ts index 98d85ba33c1..1bd2f3a96f6 100644 --- a/components/centraldashboard/app/api.ts +++ b/components/centraldashboard/app/api.ts @@ -249,4 +249,4 @@ export class Api { const languagelist = Array.from(new Set(languages.map(lang => lang.split(/-|;/)[0]))); return languagelist; } -} +} \ No newline at end of file diff --git a/components/centraldashboard/public/assets/i18n/languages.json b/components/centraldashboard/public/assets/i18n/languages.json index fd802f45875..cdd3f538b89 100644 --- a/components/centraldashboard/public/assets/i18n/languages.json +++ b/components/centraldashboard/public/assets/i18n/languages.json @@ -27,6 +27,9 @@ "dashboardView.docItemOfficialKubeflowDocsText": "Official Kubeflow Docs", "dashboardView.docItemOfficialKubeflowDocsDesc": "Advanced documentation for installing, running, and using Kubeflow", "dashboardView.docItemOfficialKubeflowDocsLink": "https://www.kubeflow.org/docs/", + "dashboardView.releaseNotes": "Latest changes in our notebook server images", + "dashboardView.releaseNotesEnglish": "(Release notes in english only)", + "dashboardView.releaseNotesMessage": "View the latest release notes for our notebook server images.", "activityView.msgSelectNamespace": "Select a workspace to see recent events", "activityView.errNoActivities": "No activities for workspace {namespace}", "activityView.errRetrivingActivities": "Error retrieving activities for workspace {namespace}", @@ -180,6 +183,9 @@ "dashboardView.docItemOfficialKubeflowDocsText": "Documents Kubeflow Officiels", "dashboardView.docItemOfficialKubeflowDocsDesc": "Documentation avancé pour installer, exécuter et utiliser Kubeflow", "dashboardView.docItemOfficialKubeflowDocsLink": "https://www.kubeflow.org/docs/", + "dashboardView.releaseNotes": "Derniers changements dans nos images de serveurs bloc-notes", + "dashboardView.releaseNotesEnglish": "(Notes de changements en anglais uniquement)", + "dashboardView.releaseNotesMessage": "Consultez les dernières notes de changements de nos images de serveurs bloc-notes.", "activityView.msgSelectNamespace": "Sélectionner un espace de travail pour voir les activités récentes", "activityView.errNoActivities": "Aucune activité pour l'espace de travail {namespace}", "activityView.errRetrivingActivities": "Erreur en récupérant les activités pour l'espace de travail {namespace}", diff --git a/components/centraldashboard/public/components/dashboard-view.css b/components/centraldashboard/public/components/dashboard-view.css index b7a0912b377..da6cadec6b3 100644 --- a/components/centraldashboard/public/components/dashboard-view.css +++ b/components/centraldashboard/public/components/dashboard-view.css @@ -16,16 +16,20 @@ } } +.dashboard-cards{ + display: flex; + align-items: center; + justify-content: center; +} + #grid { display: grid; grid-gap: .75em; /* 12px */ grid-template-columns: repeat(3, 1fr); - margin: 0 auto; } -.security-messages { +.single-column { width: 80%; - margin: 0 auto; } .column { diff --git a/components/centraldashboard/public/components/dashboard-view.js b/components/centraldashboard/public/components/dashboard-view.js index 3f5eb1ce89a..a4baa087f6f 100644 --- a/components/centraldashboard/public/components/dashboard-view.js +++ b/components/centraldashboard/public/components/dashboard-view.js @@ -4,6 +4,7 @@ import '@polymer/paper-card/paper-card.js'; import '@polymer/paper-ripple/paper-ripple.js'; import '@polymer/paper-item/paper-icon-item.js'; import '@polymer/paper-icon-button/paper-icon-button.js'; + // eslint-disable-next-line max-len import {AppLocalizeBehavior} from '@polymer/app-localize-behavior/app-localize-behavior.js'; import {mixinBehaviors} from '@polymer/polymer/lib/legacy/class.js'; diff --git a/components/centraldashboard/public/components/dashboard-view.pug b/components/centraldashboard/public/components/dashboard-view.pug index 5a00060a078..adafef65a16 100644 --- a/components/centraldashboard/public/components/dashboard-view.pug +++ b/components/centraldashboard/public/components/dashboard-view.pug @@ -1,22 +1,57 @@ template(is='dom-if', if='[[securityMessages.length]]') - div.security-messages - security-messages-card(messages='[[securityMessages]]') -div#grid - .column - notebook-default-card(namespace='[[namespace]]', language='[[language]]', resources='[[resources]]') - .column - paper-card#Quick-Links(heading="{{localize('dashboardView.headingQuickLinks')}}") - template(is='dom-repeat', items='[[quickLinks]]') - template(is='dom-if', if='[[equals(item.type, "internal")]]') - iframe-link.link(href$="[[item.link]]") - paper-icon-item.external - paper-ripple - paper-item-body(two-line) - .header [[item.text]] - aside(secondary) [[item.desc]] - iron-icon(icon='kubeflow:bolt', slot='item-icon') - template(is='dom-if', if='[[equals(item.type, "external")]]') - a.link(href$='[[item.link]]', tabindex='-1', target='_blank') + .dashboard-cards + .single-column + security-messages-card(messages='[[securityMessages]]') +.dashboard-cards + div#grid + .column + notebook-default-card(namespace='[[namespace]]', language='[[language]]', resources='[[resources]]') + .column + paper-card#Quick-Links(heading="{{localize('dashboardView.headingQuickLinks')}}") + template(is='dom-repeat', items='[[quickLinks]]') + template(is='dom-if', if='[[equals(item.type, "internal")]]') + iframe-link.link(href$="[[item.link]]") + paper-icon-item.external + paper-ripple + paper-item-body(two-line) + .header [[item.text]] + aside(secondary) [[item.desc]] + iron-icon(icon='kubeflow:bolt', slot='item-icon') + template(is='dom-if', if='[[equals(item.type, "external")]]') + a.link(href$='[[item.link]]', tabindex='-1', target='_blank') + paper-icon-item.external + paper-ripple + paper-item-body(two-line) + .header [[item.text]] + aside(secondary) [[item.desc]] + paper-icon-button.button(icon='open-in-new', + slot='item-icon', alt='[[item.text]]', tabindex=-1) + template(is='dom-if', if='[[metrics.resourceChartsLinkText]]') + resource-chart(header-text='Cluster CPU Utilization', metric='cpu', + interval='Last60m', + external-link='[[metrics.resourceChartsLink]]', + external-link-text='[[metrics.resourceChartsLinkText]]') + resource-chart(header-text='Pod CPU Utilization', metric='podcpu', + interval='Last60m', + external-link='[[metrics.resourceChartsLink]]' + external-link-text='[[metrics.resourceChartsLinkText]]') + .column + template(is='dom-if', if='[[platformDetails.links]]') + paper-card#Platform-Links(class$='[[platformDetails.name]]', + heading='[[platformDetails.title]]', image='[[platformDetails.logo]]') + template(is='dom-repeat', items='[[platformDetails.links]]') + a.link(href$='[[item.link]]', tabindex='-1', target='_blank') + paper-icon-item.external + paper-ripple + paper-item-body(two-line) + .header [[item.headerText]] + aside(secondary) [[item.secondaryText]] + paper-icon-button.button(icon='open-in-new', + slot='item-icon', alt='[[item.text]]', tabindex=-1) + paper-card#Documentation(heading="{{localize('dashboardView.headingDocumentation')}}") + template(is='dom-repeat', items='[[documentationItems]]') + a.link(href$='[[item.link]]', tabindex='-1', + target='_blank') paper-icon-item.external paper-ripple paper-item-body(two-line) @@ -24,36 +59,16 @@ div#grid aside(secondary) [[item.desc]] paper-icon-button.button(icon='open-in-new', slot='item-icon', alt='[[item.text]]', tabindex=-1) - template(is='dom-if', if='[[metrics.resourceChartsLinkText]]') - resource-chart(header-text='Cluster CPU Utilization', metric='cpu', - interval='Last60m', - external-link='[[metrics.resourceChartsLink]]', - external-link-text='[[metrics.resourceChartsLinkText]]') - resource-chart(header-text='Pod CPU Utilization', metric='podcpu', - interval='Last60m', - external-link='[[metrics.resourceChartsLink]]' - external-link-text='[[metrics.resourceChartsLinkText]]') - .column - template(is='dom-if', if='[[platformDetails.links]]') - paper-card#Platform-Links(class$='[[platformDetails.name]]', - heading='[[platformDetails.title]]', image='[[platformDetails.logo]]') - template(is='dom-repeat', items='[[platformDetails.links]]') - a.link(href$='[[item.link]]', tabindex='-1', target='_blank') +.dashboard-cards + .single-column + paper-card(heading="{{localize('dashboardView.releaseNotes')}}") + a.link(href='https://github.com/StatCan/zone-kubeflow-containers/releases/latest', tabindex='-1', + target='_blank', rel='noopener noreferrer') paper-icon-item.external paper-ripple paper-item-body(two-line) - .header [[item.headerText]] - aside(secondary) [[item.secondaryText]] + .header {{localize('dashboardView.releaseNotesMessage')}} + aside(secondary) {{localize('dashboardView.releaseNotesEnglish')}} paper-icon-button.button(icon='open-in-new', - slot='item-icon', alt='[[item.text]]', tabindex=-1) - paper-card#Documentation(heading="{{localize('dashboardView.headingDocumentation')}}") - template(is='dom-repeat', items='[[documentationItems]]') - a.link(href$='[[item.link]]', tabindex='-1', - target='_blank') - paper-icon-item.external - paper-ripple - paper-item-body(two-line) - .header [[item.text]] - aside(secondary) [[item.desc]] - paper-icon-button.button(icon='open-in-new', - slot='item-icon', alt='[[item.text]]', tabindex=-1) + slot='item-icon', alt="{{localize('dashboardView.releaseNotesMessage')}}", tabindex=-1) + \ No newline at end of file