From 76306292adb8ba396225ecf257a093f87705a245 Mon Sep 17 00:00:00 2001 From: Sanders Lauture Date: Fri, 13 Oct 2017 22:18:30 -0700 Subject: [PATCH] Show preview tag on extention page if extension is in in preview --- .../extensionManagement/common/extensionManagement.ts | 3 ++- .../node/extensionGalleryService.ts | 8 +++++++- .../parts/extensions/browser/extensionEditor.ts | 7 +++++++ .../parts/extensions/browser/media/extensionEditor.css | 10 +++++++++- src/vs/workbench/parts/extensions/common/extensions.ts | 3 ++- .../extensions/node/extensionsWorkbenchService.ts | 6 +++++- 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index aa16e8e0f05c6..4081558ccafc5 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -152,6 +152,7 @@ export interface IGalleryExtension { assets: IGalleryExtensionAssets; properties: IGalleryExtensionProperties; telemetryData: any; + preview: boolean; } export interface IGalleryMetadata { @@ -308,4 +309,4 @@ export interface IExtensionTipsService { export const ExtensionsLabel = localize('extensions', "Extensions"); export const ExtensionsChannelId = 'extensions'; -export const PreferencesLabel = localize('preferences', "Preferences"); \ No newline at end of file +export const PreferencesLabel = localize('preferences', "Preferences"); diff --git a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts index 4453efbc64d0a..bd2536a534dac 100644 --- a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts @@ -55,6 +55,7 @@ interface IRawGalleryExtension { publisher: { displayName: string, publisherId: string, publisherName: string; }; versions: IRawGalleryExtensionVersion[]; statistics: IRawGalleryExtensionStatistics[]; + flags: string; } interface IRawGalleryQueryResult { @@ -233,6 +234,10 @@ function getEngine(version: IRawGalleryExtensionVersion): string { return (values.length > 0 && values[0].value) || ''; } +function getIsPreview(flags: string): boolean { + return flags.indexOf('preview') !== -1; +} + function toExtension(galleryExtension: IRawGalleryExtension, extensionsGalleryUrl: string, index: number, query: Query, querySource?: string): IGalleryExtension { const [version] = galleryExtension.versions; const assets = { @@ -274,7 +279,8 @@ function toExtension(galleryExtension: IRawGalleryExtension, extensionsGalleryUr index: ((query.pageNumber - 1) * query.pageSize) + index, searchText: query.searchText, querySource - } + }, + preview: getIsPreview(galleryExtension.flags) }; } diff --git a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/browser/extensionEditor.ts index e49587e3c0c58..2f9ff8484b8d9 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionEditor.ts @@ -155,6 +155,7 @@ export class ExtensionEditor extends BaseEditor { private icon: HTMLImageElement; private name: HTMLElement; private identifier: HTMLElement; + private preview: HTMLElement; private license: HTMLElement; private publisher: HTMLElement; private installCount: HTMLElement; @@ -220,6 +221,7 @@ export class ExtensionEditor extends BaseEditor { const title = append(details, $('.title')); this.name = append(title, $('span.name.clickable', { title: localize('name', "Extension name") })); this.identifier = append(title, $('span.identifier', { title: localize('extension id', "Extension identifier") })); + this.preview = append(title, $('span.preview', { title: localize('preview', "Preview") })); const subtitle = append(details, $('.subtitle')); this.publisher = append(subtitle, $('span.publisher.clickable', { title: localize('publisher', "Publisher name") })); @@ -285,6 +287,11 @@ export class ExtensionEditor extends BaseEditor { this.name.textContent = extension.displayName; this.identifier.textContent = extension.id; + if (extension.preview) { + this.preview.textContent = localize('preview', "Preview"); + } else { + this.preview.textContent = null; + } this.publisher.textContent = extension.publisherDisplayName; this.description.textContent = extension.description; diff --git a/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css b/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css index b5aeae7795d7f..d0f18ad002229 100644 --- a/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css +++ b/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css @@ -58,6 +58,14 @@ white-space: nowrap; } +.extension-editor > .header > .details > .title > .preview { + background: rgb(214, 63, 38); + font-size: 14px; + margin-left: 10px; + padding: 0px 4px; + border-radius: 4px; +} + .extension-editor > .header > .details > .subtitle { padding-top: 10px; white-space: nowrap; @@ -310,4 +318,4 @@ font-size: 90%; font-weight: 600; opacity: 0.6; -} \ No newline at end of file +} diff --git a/src/vs/workbench/parts/extensions/common/extensions.ts b/src/vs/workbench/parts/extensions/common/extensions.ts index 788e1135a2a8c..98ad599c0fb39 100644 --- a/src/vs/workbench/parts/extensions/common/extensions.ts +++ b/src/vs/workbench/parts/extensions/common/extensions.ts @@ -46,6 +46,7 @@ export interface IExtension { disabledForWorkspace: boolean; dependencies: string[]; telemetryData: any; + preview: boolean; getManifest(): TPromise; getReadme(): TPromise; getChangelog(): TPromise; @@ -87,4 +88,4 @@ export const ConfigurationKey = 'extensions'; export interface IExtensionsConfiguration { autoUpdate: boolean; ignoreRecommendations: boolean; -} \ No newline at end of file +} diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index 91edacaad0adb..bf6432081a9af 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -172,6 +172,10 @@ class Extension implements IExtension { } } + get preview(): boolean { + return this.gallery ? this.gallery.preview : false; + } + getManifest(): TPromise { if (this.gallery) { return this.galleryService.getManifest(this.gallery); @@ -907,4 +911,4 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { this.syncDelayer.cancel(); this.disposables = dispose(this.disposables); } -} \ No newline at end of file +}