From 04af41c4240fe1ea9c6add7dcd23721c05fd22d9 Mon Sep 17 00:00:00 2001 From: Leila Lali Date: Tue, 28 Apr 2020 21:21:30 -0700 Subject: [PATCH] ML - dashboard icons and links (#10153) * ML - dashboard icons and links --- .github/workflows/ci.yml | 2 +- build/.cachesalt | 2 +- build/lib/extensions.js | 2 +- build/lib/extensions.ts | 2 +- .../images/background.svg | 1 - .../images/extensionIcon.png | Bin 1403 -> 0 bytes .../images/makePredictions.svg | 1 - .../images/manageModels.svg | 1 - .../.gitignore | 0 .../.vscodeignore | 0 .../README.md | 0 .../config.json | 0 .../coverConfig.json | 0 .../images/arrow.svg | 0 .../machine-learning/images/background.svg | 142 +++++++++++ .../images/createNotebook.svg | 0 .../images/dark/delete_inverse.svg | 0 .../images/dark/edit_inverse.svg | 0 .../images/dark/showLess_inverse.svg | 3 + .../images/dark/showMore_inverse.svg | 3 + .../machine-learning/images/extensionIcon.png | Bin 0 -> 38516 bytes .../machine-learning/images/extensionIcon.svg | 27 ++ .../images/installPackages.svg | 0 .../images/light/delete.svg | 0 .../images/light/edit.svg | 0 .../images/light/showLess.svg | 3 + .../images/light/showMore.svg | 3 + .../images/linkIcon.svg | 0 .../images/makePredictions.svg | 1 + .../machine-learning/images/manageModels.svg | 1 + .../images/registerRuntime.svg | 0 .../images/video1.svg | 0 .../images/video2.svg | 0 .../package.json | 23 +- .../package.nls.json | 12 +- .../src/common/apiWrapper.ts | 0 .../src/common/constants.ts | 20 +- .../src/common/eventEmitter.ts | 0 .../src/common/httpClient.ts | 0 .../src/common/processService.ts | 0 .../src/common/queryRunner.ts | 0 .../src/common/utils.ts | 0 .../src/configurations/config.ts | 0 .../src/configurations/packageConfigModel.ts | 0 .../src/controllers/mainController.ts | 24 -- .../src/externalLanguage/languageService.ts | 0 .../src/main.ts | 0 .../src/modelManagement/artifacts.ts | 0 .../src/modelManagement/assets.ts | 0 .../azureModelRegistryService.ts | 0 .../modelManagement/deployedModelService.ts | 0 .../src/modelManagement/interfaces.ts | 0 .../src/modelManagement/mappers.ts | 0 .../src/modelManagement/modelConfigRecent.ts | 0 .../src/modelManagement/modelPythonClient.ts | 0 .../src/modelManagement/parameters.ts | 0 .../src/modelManagement/queries.ts | 0 .../src/modelManagement/workspacesModels.ts | 0 .../packageManageProviderBase.ts | 0 .../packageManagementService.ts | 0 .../src/packageManagement/packageManager.ts | 0 .../sqlPythonPackageManageProvider.ts | 0 .../sqlRPackageManageProvider.ts | 0 .../src/prediction/interfaces.ts | 0 .../src/prediction/predictService.ts | 0 .../src/test/common/processService.test.ts | 0 .../src/test/index.ts | 0 .../src/test/mainController.test.ts | 0 .../azureModelRegistryService.test.ts | 0 .../deployedModelService.test.ts | 0 .../modelManagement/modelPythonClient.test.ts | 0 .../packageManagementService.test.ts | 0 .../packageManagement/packageManager.test.ts | 0 .../sqlPythonPackageManageProvider.test.ts | 0 .../sqlRPackageManageProvider.test.ts | 0 .../src/test/packageManagement/utils.ts | 0 .../test/prediction/predictService.test.ts | 0 .../src/test/queryRunner.test.ts | 0 .../src/test/utils.ts | 0 .../src/test/views/dashboardWidget.test.ts | 0 .../addEditLanguageTab.test.ts | 0 .../languageController.test.ts | 0 .../languageEditDialog.test.ts | 0 .../externalLanguages/languagesDialog.test.ts | 0 .../languagesDialogModel.test.ts | 0 .../src/test/views/externalLanguages/utils.ts | 0 .../models/ModelManagementController.test.ts | 0 .../views/models/azureModelsComponent.test.ts | 0 .../test/views/models/editModelDialog.test.ts | 0 .../test/views/models/predictWizard.test.ts | 0 .../views/models/registerModelWizard.test.ts | 0 .../models/registeredModelsDialog.test.ts | 0 .../src/test/views/models/utils.ts | 0 .../src/test/views/utils.ts | 0 .../src/types.ts | 0 .../src/typings/azure-resource.d.ts | 0 .../src/typings/notebookServices.d.ts | 0 .../src/typings/ref.d.ts | 0 .../src/views/controllerBase.ts | 0 .../src/views/dialogView.ts | 0 .../externalLanguages/addEditLanguageTab.ts | 0 .../externalLanguages/currentLanguagesTab.ts | 0 .../externalLanguages/fileBrowserDialog.ts | 0 .../externalLanguages/languageContentView.ts | 0 .../externalLanguages/languageController.ts | 0 .../externalLanguages/languageEditDialog.ts | 0 .../externalLanguages/languageViewBase.ts | 0 .../externalLanguages/languagesDialog.ts | 0 .../views/externalLanguages/languagesTable.ts | 0 .../src/views/interfaces.ts | 0 .../src/views/mainViewBase.ts | 0 .../src/views/models/azureModelsComponent.ts | 0 .../src/views/models/azureModelsTable.ts | 0 .../models/azureResourceFilterComponent.ts | 0 .../src/views/models/azureSignInComponent.ts | 0 .../src/views/models/localModelsComponent.ts | 0 .../manageModels/currentModelsComponent.ts | 0 .../models/manageModels/currentModelsTable.ts | 0 .../models/manageModels/editModelDialog.ts | 0 .../models/manageModels/importModelWizard.ts | 0 .../models/manageModels/manageModelsDialog.ts | 0 .../manageModels/modelDetailsComponent.ts | 0 .../manageModels/modelDetailsEditPage.ts | 0 .../manageModels/modelImportLocationPage.ts | 0 .../src/views/models/modelBrowsePage.ts | 0 .../src/views/models/modelDetailsPage.ts | 0 .../views/models/modelManagementController.ts | 0 .../src/views/models/modelSourcePage.ts | 0 .../src/views/models/modelSourcesComponent.ts | 0 .../src/views/models/modelViewBase.ts | 0 .../models/modelsDetailsTableComponent.ts | 0 .../models/prediction/columnsSelectionPage.ts | 0 .../views/models/prediction/columnsTable.ts | 0 .../prediction/inputColumnsComponent.ts | 0 .../views/models/prediction/modelArtifact.ts | 0 .../prediction/outputColumnsComponent.ts | 0 .../views/models/prediction/predictWizard.ts | 0 .../views/models/tableSelectionComponent.ts | 0 .../src/views/viewBase.ts | 0 .../src/views/widgets/dashboardWidget.ts | 238 ++++++++++++------ .../src/views/wizardView.ts | 0 .../tsconfig.json | 0 .../yarn.lock | 0 scripts/test-extensions-unit.bat | 6 +- scripts/test-extensions-unit.sh | 4 +- 145 files changed, 387 insertions(+), 134 deletions(-) delete mode 100644 extensions/machine-learning-services/images/background.svg delete mode 100644 extensions/machine-learning-services/images/extensionIcon.png delete mode 100644 extensions/machine-learning-services/images/makePredictions.svg delete mode 100644 extensions/machine-learning-services/images/manageModels.svg rename extensions/{machine-learning-services => machine-learning}/.gitignore (100%) rename extensions/{machine-learning-services => machine-learning}/.vscodeignore (100%) rename extensions/{machine-learning-services => machine-learning}/README.md (100%) rename extensions/{machine-learning-services => machine-learning}/config.json (100%) rename extensions/{machine-learning-services => machine-learning}/coverConfig.json (100%) rename extensions/{machine-learning-services => machine-learning}/images/arrow.svg (100%) create mode 100644 extensions/machine-learning/images/background.svg rename extensions/{machine-learning-services => machine-learning}/images/createNotebook.svg (100%) rename extensions/{machine-learning-services => machine-learning}/images/dark/delete_inverse.svg (100%) rename extensions/{machine-learning-services => machine-learning}/images/dark/edit_inverse.svg (100%) create mode 100644 extensions/machine-learning/images/dark/showLess_inverse.svg create mode 100644 extensions/machine-learning/images/dark/showMore_inverse.svg create mode 100644 extensions/machine-learning/images/extensionIcon.png create mode 100644 extensions/machine-learning/images/extensionIcon.svg rename extensions/{machine-learning-services => machine-learning}/images/installPackages.svg (100%) rename extensions/{machine-learning-services => machine-learning}/images/light/delete.svg (100%) rename extensions/{machine-learning-services => machine-learning}/images/light/edit.svg (100%) create mode 100644 extensions/machine-learning/images/light/showLess.svg create mode 100644 extensions/machine-learning/images/light/showMore.svg rename extensions/{machine-learning-services => machine-learning}/images/linkIcon.svg (100%) create mode 100644 extensions/machine-learning/images/makePredictions.svg create mode 100644 extensions/machine-learning/images/manageModels.svg rename extensions/{machine-learning-services => machine-learning}/images/registerRuntime.svg (100%) rename extensions/{machine-learning-services => machine-learning}/images/video1.svg (100%) rename extensions/{machine-learning-services => machine-learning}/images/video2.svg (100%) rename extensions/{machine-learning-services => machine-learning}/package.json (89%) rename extensions/{machine-learning-services => machine-learning}/package.nls.json (68%) rename extensions/{machine-learning-services => machine-learning}/src/common/apiWrapper.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/common/constants.ts (92%) rename extensions/{machine-learning-services => machine-learning}/src/common/eventEmitter.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/common/httpClient.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/common/processService.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/common/queryRunner.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/common/utils.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/configurations/config.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/configurations/packageConfigModel.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/controllers/mainController.ts (84%) rename extensions/{machine-learning-services => machine-learning}/src/externalLanguage/languageService.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/main.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/artifacts.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/assets.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/azureModelRegistryService.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/deployedModelService.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/interfaces.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/mappers.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/modelConfigRecent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/modelPythonClient.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/parameters.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/queries.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/modelManagement/workspacesModels.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/packageManagement/packageManageProviderBase.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/packageManagement/packageManagementService.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/packageManagement/packageManager.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/packageManagement/sqlPythonPackageManageProvider.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/packageManagement/sqlRPackageManageProvider.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/prediction/interfaces.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/prediction/predictService.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/common/processService.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/index.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/mainController.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/modelManagement/azureModelRegistryService.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/modelManagement/deployedModelService.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/modelManagement/modelPythonClient.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/packageManagement/packageManagementService.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/packageManagement/packageManager.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/packageManagement/sqlPythonPackageManageProvider.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/packageManagement/sqlRPackageManageProvider.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/packageManagement/utils.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/prediction/predictService.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/queryRunner.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/utils.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/dashboardWidget.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/externalLanguages/addEditLanguageTab.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/externalLanguages/languageController.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/externalLanguages/languageEditDialog.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/externalLanguages/languagesDialog.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/externalLanguages/languagesDialogModel.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/externalLanguages/utils.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/models/ModelManagementController.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/models/azureModelsComponent.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/models/editModelDialog.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/models/predictWizard.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/models/registerModelWizard.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/models/registeredModelsDialog.test.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/models/utils.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/test/views/utils.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/types.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/typings/azure-resource.d.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/typings/notebookServices.d.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/typings/ref.d.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/controllerBase.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/dialogView.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/addEditLanguageTab.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/currentLanguagesTab.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/fileBrowserDialog.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/languageContentView.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/languageController.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/languageEditDialog.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/languageViewBase.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/languagesDialog.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/externalLanguages/languagesTable.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/interfaces.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/mainViewBase.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/azureModelsComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/azureModelsTable.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/azureResourceFilterComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/azureSignInComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/localModelsComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/manageModels/currentModelsComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/manageModels/currentModelsTable.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/manageModels/editModelDialog.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/manageModels/importModelWizard.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/manageModels/manageModelsDialog.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/manageModels/modelDetailsComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/manageModels/modelDetailsEditPage.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/manageModels/modelImportLocationPage.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/modelBrowsePage.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/modelDetailsPage.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/modelManagementController.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/modelSourcePage.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/modelSourcesComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/modelViewBase.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/modelsDetailsTableComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/prediction/columnsSelectionPage.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/prediction/columnsTable.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/prediction/inputColumnsComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/prediction/modelArtifact.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/prediction/outputColumnsComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/prediction/predictWizard.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/models/tableSelectionComponent.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/viewBase.ts (100%) rename extensions/{machine-learning-services => machine-learning}/src/views/widgets/dashboardWidget.ts (71%) rename extensions/{machine-learning-services => machine-learning}/src/views/wizardView.ts (100%) rename extensions/{machine-learning-services => machine-learning}/tsconfig.json (100%) rename extensions/{machine-learning-services => machine-learning}/yarn.lock (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f82be05653..1f81453c02 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,7 +54,7 @@ jobs: # {{SQL CARBON EDIT}} Add coveralls. We merge first to get around issue where parallel builds weren't being combined correctly - run: | mkdir .build/coverage-combined - cat .build/coverage-single/lcov.info ./extensions/admin-tool-ext-win/coverage/lcov.info ./extensions/agent/coverage/lcov.info ./extensions/azurecore/coverage/lcov.info ./extensions/cms/coverage/lcov.info ./extensions/dacpac/coverage/lcov.info ./extensions/schema-compare/coverage/lcov.info ./extensions/notebook/coverage/lcov.info ./extensions/resource-deployment/coverage/lcov.info ./extensions/machine-learning-services/coverage/lcov.info > .build/coverage-combined/lcov.info + cat .build/coverage-single/lcov.info ./extensions/admin-tool-ext-win/coverage/lcov.info ./extensions/agent/coverage/lcov.info ./extensions/azurecore/coverage/lcov.info ./extensions/cms/coverage/lcov.info ./extensions/dacpac/coverage/lcov.info ./extensions/schema-compare/coverage/lcov.info ./extensions/notebook/coverage/lcov.info ./extensions/resource-deployment/coverage/lcov.info ./extensions/machine-learning/coverage/lcov.info > .build/coverage-combined/lcov.info name: Merge coverage reports - name: Upload Code Coverage uses: coverallsapp/github-action@v1.0.1 diff --git a/build/.cachesalt b/build/.cachesalt index eaf9cd6394..79cdde85d1 100644 --- a/build/.cachesalt +++ b/build/.cachesalt @@ -1 +1 @@ -2020-04-28T04:20:58.491Z +2020-04-29T05:20:58.491Z diff --git a/build/lib/extensions.js b/build/lib/extensions.js index be3abd23f4..637ff6b32d 100644 --- a/build/lib/extensions.js +++ b/build/lib/extensions.js @@ -206,7 +206,7 @@ const externalExtensions = [ 'query-history', 'liveshare', 'sql-database-projects', - 'machine-learning-services' + 'machine-learning' ]; // extensions that require a rebuild since they have native parts const rebuildExtensions = [ diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts index 7ae12f2764..47cc41a510 100644 --- a/build/lib/extensions.ts +++ b/build/lib/extensions.ts @@ -241,7 +241,7 @@ const externalExtensions = [ 'query-history', 'liveshare', 'sql-database-projects', - 'machine-learning-services' + 'machine-learning' ]; // extensions that require a rebuild since they have native parts diff --git a/extensions/machine-learning-services/images/background.svg b/extensions/machine-learning-services/images/background.svg deleted file mode 100644 index 50fd10a899..0000000000 --- a/extensions/machine-learning-services/images/background.svg +++ /dev/null @@ -1 +0,0 @@ -ADS ML Extension_background_image \ No newline at end of file diff --git a/extensions/machine-learning-services/images/extensionIcon.png b/extensions/machine-learning-services/images/extensionIcon.png deleted file mode 100644 index 00f3b452c87bf4d1011cb04ef16fbc4f12623d30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1403 zcmb7EU2GIp6#nj=otgdrYnNrWKjIcjSzAB~ae2T3RGXq__W_j>r&OPUz zd*-|6-gC}9GkEYtpF8db;Op<}eVJs~Vy8sok;zYACE= z|8OeA65^c7$jK(tH2K29LI>x(ne;HR!5CYl`Ftc2nIqj?^Q|XYI-P!kasJ^fI?u`E3lor@k{i)pes%As_=q-gnFz0!)8Y$IXDJ) zHel6o;Nndcdt01{2Sj{7`!~XF5ltSBUv92IaEZKYDj!_K7b?M(iQSCCrUO{RQ1=FG zk9)AHn;6>R$D4cn2st^<9*SaXM8-?WAVjx>z(+k{ zygio1QlX4Xb0%6sGHy^Xr(!a?325K+vic!_;q;{8p16T8_SzYV=bx-uR1@_qVXNwh#-%{2#L}OdCS5X<;(v(sgi zD_^~G-n382sS~bOy&t1E0}{6HjN<)-uj>q4oeDbTlBSl}@*fPIo@ct-TMu9VdQj2NRnh$`NY+3iZcgQ=2*v_VAMf zPd3_K)xjzQqKRw)vw3A|9Z=P!Mv0!ekfIl*qsI8(34@aRAt1ju_SrFOssF&i-qD`n GkN*KnE+L@+ diff --git a/extensions/machine-learning-services/images/makePredictions.svg b/extensions/machine-learning-services/images/makePredictions.svg deleted file mode 100644 index fd0bb4ff6f..0000000000 --- a/extensions/machine-learning-services/images/makePredictions.svg +++ /dev/null @@ -1 +0,0 @@ -j_ \ No newline at end of file diff --git a/extensions/machine-learning-services/images/manageModels.svg b/extensions/machine-learning-services/images/manageModels.svg deleted file mode 100644 index 1461d0f8cc..0000000000 --- a/extensions/machine-learning-services/images/manageModels.svg +++ /dev/null @@ -1 +0,0 @@ -v_ \ No newline at end of file diff --git a/extensions/machine-learning-services/.gitignore b/extensions/machine-learning/.gitignore similarity index 100% rename from extensions/machine-learning-services/.gitignore rename to extensions/machine-learning/.gitignore diff --git a/extensions/machine-learning-services/.vscodeignore b/extensions/machine-learning/.vscodeignore similarity index 100% rename from extensions/machine-learning-services/.vscodeignore rename to extensions/machine-learning/.vscodeignore diff --git a/extensions/machine-learning-services/README.md b/extensions/machine-learning/README.md similarity index 100% rename from extensions/machine-learning-services/README.md rename to extensions/machine-learning/README.md diff --git a/extensions/machine-learning-services/config.json b/extensions/machine-learning/config.json similarity index 100% rename from extensions/machine-learning-services/config.json rename to extensions/machine-learning/config.json diff --git a/extensions/machine-learning-services/coverConfig.json b/extensions/machine-learning/coverConfig.json similarity index 100% rename from extensions/machine-learning-services/coverConfig.json rename to extensions/machine-learning/coverConfig.json diff --git a/extensions/machine-learning-services/images/arrow.svg b/extensions/machine-learning/images/arrow.svg similarity index 100% rename from extensions/machine-learning-services/images/arrow.svg rename to extensions/machine-learning/images/arrow.svg diff --git a/extensions/machine-learning/images/background.svg b/extensions/machine-learning/images/background.svg new file mode 100644 index 0000000000..ba405060ff --- /dev/null +++ b/extensions/machine-learning/images/background.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/machine-learning-services/images/createNotebook.svg b/extensions/machine-learning/images/createNotebook.svg similarity index 100% rename from extensions/machine-learning-services/images/createNotebook.svg rename to extensions/machine-learning/images/createNotebook.svg diff --git a/extensions/machine-learning-services/images/dark/delete_inverse.svg b/extensions/machine-learning/images/dark/delete_inverse.svg similarity index 100% rename from extensions/machine-learning-services/images/dark/delete_inverse.svg rename to extensions/machine-learning/images/dark/delete_inverse.svg diff --git a/extensions/machine-learning-services/images/dark/edit_inverse.svg b/extensions/machine-learning/images/dark/edit_inverse.svg similarity index 100% rename from extensions/machine-learning-services/images/dark/edit_inverse.svg rename to extensions/machine-learning/images/dark/edit_inverse.svg diff --git a/extensions/machine-learning/images/dark/showLess_inverse.svg b/extensions/machine-learning/images/dark/showLess_inverse.svg new file mode 100644 index 0000000000..0ac69e1ad5 --- /dev/null +++ b/extensions/machine-learning/images/dark/showLess_inverse.svg @@ -0,0 +1,3 @@ + + + diff --git a/extensions/machine-learning/images/dark/showMore_inverse.svg b/extensions/machine-learning/images/dark/showMore_inverse.svg new file mode 100644 index 0000000000..df8b0a3dfc --- /dev/null +++ b/extensions/machine-learning/images/dark/showMore_inverse.svg @@ -0,0 +1,3 @@ + + + diff --git a/extensions/machine-learning/images/extensionIcon.png b/extensions/machine-learning/images/extensionIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..1af4f4325a4e1386a326f11ed803d3eeaf85722a GIT binary patch literal 38516 zcmeFZWmp_dv@SX`3^2I6yGtNIa1Sm)0tp03u;2;qL$CnB0|bZQPH=(^7TjF|LvVMu zGvwQQpL_2)```U_&d2i%-7`;Bb$8X0cfD&>hia-TV4;(v0{{RlB}F+c004wI1py!^ zh{LJ-#5Ljobkb6g0hA3-;&86@c{j zcf@cZ?*ZWdXrqoeKAu7!|NYkyDHHe~tr5Rvg8s8L2#|^NKhGcg#V?p#Ar5Gcim#ji z08#A64{)G1D*ynH0w~Ez>$n4V(@>kJ6kHBBrl!4OPIK~&O8+oZ%#%`#(>b>Qj1_66 zc#YBNz=|^HA0WYpL5zXX-d_PIG7#+OK-@1s+GbFMR>QRxgh;!aOJn=gDV_Z!_7 z7bf@TXB+rMs~Ro+UhnPh4kS6<^H*&&H5)+MkkM#?j8Jei0AC8E2>3tg3oV-&6dWrD zzuqYywq0rwA75BVwYRcTjEao3_}E}5k}{abpM?3_f|-RyTTM-^>+0$XRN`!qnwG{@ zTUSStm!BWbz`)S;yU}eJsZJ|)CaV-NKb_$K6u{B;u)e<2A-pY5CTk>VctbS2>n+Q( z^<%+!Wf#~S`tz}x+{%RU_}c`n!U^ydRz*h0)8B$4K8hP0TbR2XucX#Fds3Hc`Dxuz zjxFdM$j9O;B0EHYH)~vK`Quw3Dr`V~5i<8=GwJ?!{3aVoh(CVg`{P7~vWE3!`mbGo zS1dCEaUXLd-{I{3vLV=KFyko>SRqeHlZ2ylGyL+}ihOFZuNH^W6lc|~O%TUJ$!Ie^ z=!wY_%=xT7&scl^L0m8f%km6v2@7;>^yug)J4Mj$dmAeEUkNY;kpdvu?Vr>^Ugx{L zrGd!D(@_4`SbnqE?XJkXIMD3Zz%8I+xm3tLW4I3rvVE%9=0Jm&@dCT>-v?C)0ynHAEZa5{oEKu=At*%1LG9#EM z(F&I|-ycxm3AjFdH8Tc-v*}-`sj7-0>)}1mHbt=x1xG{C5jR(mN&128Fy%(s@p#_k zH~NqX!Ltx7ldLvV zsN90e$r-&&GS5btp+KqXn_=A>mJIJoDr%>BG{1&D5UL+H;T-agy8af`3F0ccU@MbD z%r8GeOjM>(m(v46S}wbI_B--Pb?BZ8D@xG-F#)GPu;lq%&Pz*6Nu=J9wEd(||J7)! z;#b^_j7CZa@CW#G9s#Yqac;jyJF-B5P*D;NCx?c$gxv%# zgQ0-dT^=N4o?rqlm&+8oh&wCus4Oi?;I;lrb44p^ty^1o{Jwsp>)wm~XUs7Gd`J>N zBr@6`^*y%z&`$8i22T*dx>MVzcD^5;ZAw57tWpv762x1U5q#v0YI^|9z}|Xv+Od`NMv)*{*o)B$PXZNLhLr50@W4e#064s)NMzkwX*p=}avd8PDH#_`@1C3Uc7 zu%uCq^<+RM)uMulE=d;O3ufpL^TMJ^oADKiOdL;8>%K9{4pa0{a51Ph7)-AMCj}!( z2AaT8dEM+kQDAKC#C(tjDN4m6^duH8S1f*aI-Yho*`NnAzAT5vO{>5=<(K@TFc4<% z43D+l`@0a)J)m|e$OM{qv@PYM`opyyVgks_>R2wnorG^1W9`^T-x5`c@kQkJp296lA5BX#?=1VTzaA%vG4 zbh_wI11<2&$jEr0xrB^;CI7*S{Ety_Io^-f zyef!)q0Bg}zWkZ-z1lECZH+ zjbs=t^%f2OUNLiLi{etyVeuBdzVl&6^ESTXkHa+}YcWXV_=#hcGgXL7b!8fBZZEig zUTG#Ha8J%$D)&OH6OZ-NI~t&+IHn&> zM(`flOe9oW5@`!BncJa|Ki}`&3cWJa=+!24hnNbN(z#uEJPns~cD!vx4l#mo@O|WE*QLBw za$J|KNT_4l-X(dty_tQl_p@WQXLqa^V-lK)3i@R9GY>tdJa+%PcmTs(jU*jz<^jxBX46b0exZ^Y*l4FyP?BH4GZu>!lirN}I z6iZN{;b+jz8zvA%a4GsqBQ>6Sl2KXjUhiCOyuKX>DX2U3zkC19?P^W zTryN64HDhE@Q?FDPrZ|Hr@sT-#zzUQG<HCQ{{ zg^~PWOOa7g58`6NyyWjhN2^H*KKlS15sp92vG9T5kmR9%Wh&~OqwoWo0fsz4Y_}pjFTZ}@)a?G4hc-fiUe|s@Q70=^K?eF{_+>}} z7b1q`{eYWJe(5%z`oo8jR+;v>wqu*w<*ofYZSC>_oQnU*N#zS7^Zb519AyG;3vYzmd@}+r^PKWOyB^!AQmM-(WmrS`=0v zVtc|{+(lN>qx3Hg*FPWtI7%zEyT-#3?BLcR+}bYV_YF>m_bm zEtt~s{(#!?+ATi0r^@j{;t{`0;FCf*kcR!G;P?;-{jE-$+p;xma%Z|+(#VEtpAJ|B zrl$aiU9HCLA-wJbAo8Kq0uRL|&6joK#U+-xd1+p`PAHMU(1FB{*Wr5IV2se|6vvr9RUdw;P0R1!WC z5r7L86B81;n42utI~eapHD>@yf@07B@E{4b2E%;}lM#d4FO|!eRfjLqXuiIN+ux%+ zQCLRrv9`hq*Fp2Sf3=nd}=9pCx#~1&fmuLAYH%u zka3v!fL!a=LFah;fE9`OsR4(C5ejZ+l4?~t+@5g1GM8Ph<(zyC`~<~m6GggzT_pHY z2IPWYApw9!UDzUZKgjCqO};Ol+Rk4N5`TDM%_PYq>bvv9+T6cA2KpX!ngT8lkunkY zPK2E!e}ei!Y2nS8EDQ8sFz_K!(8+Xk--A|&<^o`-l|_uP?e%x#g&Vr}bVBXMcb61? zysrA>Xq!x$^ducC0Z(x^s~;@d{5*DlbT9f&>gvhgb18b>5at#$n%DsVLl0N*%Lj@t zcDnB?lwWx*7ke3VxWHLlb!FsVDM~%@7rQmRBZq*>=;Ije_Q-JVZ+YTd+^$czgdPJ4 zav?s}eHKCz2_VNoPDuZKCX-yI<>eQ!d;&~bBS)QWEtx*Rt0xIA#OD)wL zu`YbMA#L(|hh&&nJ+#l+4#QW@_lo!uF zWU^1_hAKGaRszTGY$e|G97?v90;&;Y8H7gExg09%xfnX4BJ-F<5GcpKhAgP2YiRulu$GklO zFq^(Whyhe!y8IDMaz1--nA^T>#SyxCgX(v+65;FLP5M#_G=*1>VKi`7s6|2+l5t{d z2p7AwJWPwzn=PQ&CZqvPeetc|Iw&_C@q<0DUSh3{F;J?CD9TcQ)JbWmug9TJp{ao} zo4199#d^Dd&D3srhg?Y*SPV`712Xja&svcO2NHwPD=%ysF(~-E8XWAMxN-njhOstv zceLm7XAJw<45y1<7HVRMvS725(VPuS+}M&pZ<```{lEu@t!U{-2-r;Pe~F(d4a-+a z3v3zhs71c#74ci^i}$llF)GjygOK6?Xxr~dGY#!2hI|gcJk%`@`u+_F{6Ha!k+&EN zaGR~;?nADxY6;uH*7Dz=qW}QP8TV($Qm=)ed!|FC`sMP^G)JL_BhM#eq0F2~3L%c|MdA8I@kEZ5*KC;;99NpwiWHhd~bsNMWQd-QUyBIWv92m%H&`a87g zwz6SlU?K!uHw2sNr_LB>Nif(Djnt{-aQZ=Aq~J{r-!~0rn)T19h^A>`&Ga>5%7frK_3bf?V zNYMbEo}NZ%i4UcXLlQ_Y9>yJoc>mr@3T%am0|@}y7!+b@v>fq_2Y&$rOkl;j-{ck++G00V56yWWf1PGGr&Q3JJsuoF8u0gELhG{LtrY0*-< zX!^d~_3YO}I_%^s?%) z$?Ql0o3Jpx7^ziA^_&kkECWC<^nF+78KOyxQ}Zu%!oU%p0Q0@{%i8a<&CyaNkdiyDX@5$14~WDQn_grr6*%Pi3 zdGK=4go@8nn?S(KqHWBbWnrbLfX_>63xu19rUdQfNY%o2V75ldraxXuPH>SwjvUsx zKfNm+q8j(yofP-cP{u03Jqp=k{fqqtd2ZBIEp4Z8T*6WON06X}NuMUCXDGCpjw>hR zo_gZc$RUtFoBvD5y|E&5eBT7!?#jc}H|!s*{HBj1W2dDj|42Iuhl8aYAf1m=Z-(do z#`??C4jP~!PZz!LNw#G$XX|rQe(8x)WyFM;4D&O%KGdU_Rr1y>CXu(XfQqugb&9k= z@K8X;Lpp`O7c_4JU4dYP%IYlyEaSJdcIJgGbh~X{EW=yc!aS9;zHB4^ZgnU3{2FX( zR|*b0LDu?~!O|rY^A#OgD^M~@IXZ9tBeg9_`YvY-{#^(5J;#F&s)0K_^1h-{j1Kvf z&d0t*fz$vPnP|;J=c+bEVvYWd1b}+8c#OcT_8Ywr-j0M(Pw{)ZWRbnuP&PhMVR;MY zy#D#wKG(88r|*+Gxg3$dQ+7(x%3giuJ}r`IX^2@(Chs#y9ujI(uHzca$*MsE1qTNe zQ+$^pFf1cTeK_zxIZ&71=*@7rzwJo|yOAZAMMM1o(CG3dpZe2{^2L%7%;xWl(bOz< zx%5}+p+;!XosN25(4j?lB~l7?3M2mtftjf&+C17!2B)a-OHu+Cf=o#z%`)e+*H+O| zNdCdfQX?aCGUW57cG)&gS1ge7pGtkkz{I;Hf+ri20($Nrmqt4C7|#giilU$~0C=$* z^}^Y*o?JSW)Ie2B!^L#2j#)2r9UGf` zv6wIPVUQ2Z-c9rae@vK!A2 z^2n5rNQIy)TrhBnyC!B{k$^CC=2fRDVY80p2hTv&)K6!pNyiEIf)Ogmkgo^5&je+k zM|}`V>KF_=MF(P`BsbErZtl}^iBmZuW&h9)aqd2SxqrI!HEdm+C5n=)ap$r}HRs+c zcAv9^6dm}k>hc~bdpXlddl`HOnD#T`w>;?kN8dgbOFJ`Z=#>N=X_VtvpF77+EviExB1-(XU!@Mj zD?ViTof#|T_3W4qt!Gn|55KwN!NHpAA#n-g2EGFVeQh?9I`WO{ zV8-}<>gur+%P)gz5?;eaKe?v8*>pI2#}eE-qvUug+mYUicJnPXBu0u0=uRagz)Cvj zR^iQwbs%81wMTE~Q*rJlYcgWq#Sp#&k4zH^Sjj&)`+WRyc)UY$Uh?VHE$ck==ez>U z3gAd%i0pm{-z?q0t~Gv7L;fUU)0nXQ(-HwsKr3$xk|f503VG(+OMgH!MMnBp1&vht zcikFsqbvD+!=vG^{BxrbamJ=f;xChd(VCx6-D+id0l>CO>M?AN=5E@OAc^^hiSL-|rjVq(A_1j?8F<()<(D#!_!+5P2 z`|Q5&*;HCEqA(;3vB90&eF@)Nm!c@C*p~+6HJU=b(~XF!r^eMYy^+`!Fxyn^YOM#v5`XfCASZ>-vdH(L#PRV>Sg}fF#E4r;)hSWd2dg+h9p_ zH~T2c03u4iXp$bCvkoqNUir-1OV(RXm)j%DK6XTODT;Ef*c~P@hAv5!vr``eZ5i1J zIxOIJxjm&$tLN09&Zxh`kQBdcs-FpPosmaOg=PatDue4Lu@T$&{O8Hb+sg)uMk5mv zY7aX>*d4GH%OAF^mFMjT8&+btwZq>XkmK1IS2!A?lmPA=9Y=T_lbfnBnvnP(kFz*3 zY{!ITu={ajA(df%Mf&9LJ2o@NnZxN5@}L6e@%1ds@a^PK$M8Pg2u<|f-alC}Bba+j z0(1fbQc5sFg?xR7PvH4bRFUM$joF|A3A>l=?*be`qP{e>JXN<3=|*wj5QrINN+-`e zsG||)tA?LOrLwltv`S!A2;x^{0PYIL53^R*;;mI^#CHuFzBre@e%T_TdGDy*h3TpH zpzaqbP>MeFshq7#b`e@VF+t;w0S2FmbsC4oMG% zhh{&|t{7GH#X5qjT%>(Gccul-%a8g8AvZ|ADE=^`OAkPclEQkPWxwBYhJ<7Ft(SyP z90j)`Z7(?Q`LE@OxRuq->>Id|zo9VcOsx}=hp7R&#H^^iC&TH!Z>VqTO{w2q*CI;@ zGsDH_>cCR{E?OW42-!O}H;p#|V_aa3BMulQFpgS5LtItE%_OBTvo}xs~gD&;w~2(_L9&cNmemV(V*x(Qfnwj$q0(|<9j(O%mstYOqxSl%>5qO#hS_2DB17%V9+@*F!gSmSW4 z9*u+%7Y{W1OKdA}<4y?MIgUfGIz}Z~*$hjpz0MKU@4MeM`NN=t*maMe1hn-^!Hl(A zSq%dOxJQT0w!vgWx@(QD_1q{gdr`S(=fC#bMiBW(zpFg_J%*836F-e3mG)!ScE#KH1uJkK7>LAkfk?n%%e zf4%z^9|9ao@{Y#4-vHBeSI{~Luzul@Kg?%?>F4V1c_uu)AmMv*!+pOMytv-kieJT* z!Nj9Ku4}}`dhOJf{_frCIRU|{Kf%iCOj0PhZ+!sRnLyE!Kc~4orNn4ao*Qa%cAWma zQdnGJZU)Oc6ahXtZ&|u6{d})j4vhRPKKh=$LVbdS7AS`>U9j7h#&Nef1f;R`*=O1J z++S*aKR@U&*Zhb58Fhrip$OI}f@I}(@48MuR_=-#8i>2mkdkur{p!jq7ta;~Vt_S(9bhWY!rBXtCxH*`Fs-=6A^=|WMT=IUBN8H&w6c!@u zC=EhE)8_@eVuVN0$!i@n-~S-FyWmk@@cKRP%H5wgUVO{JR4(Twn_wtBqia-n<^;dZ zcqT4S4K;zM$HlFVBCNvdjPo%pvr7v+Ms~T=lAl(xYtJz6Y0%4b$F=$?;ptY92bo5- zWE}@Gvq`Q@D5b~rG_}O-oq~D`uZb>aB)A$E0{0=RdEl77<5J39s=Fiv_5C>7kvcrz4`zN&g$VXYQb}ZiRgOE@xe_axWh4a0kl6f72th=%e+LrX&Q+3dAS_jNlClyS4d}rLj3nT*SE<9~tPCwVY`fxAW_6W^jDs84q1dm7lKDv({+O4%UF(pr%u%(|ZlWM8wq6h5413m-A!||0rZOC! zS+@l%kfMat-ln-`jTA zkrPXSD!~KD0B7&SVgB3RV2$vkQ;j<6rsHd`D4K_%#^Gi=CqE1$EZmOu*G0mKbQ@=N z@p>(=-a_GHLNLmW0xd0R8nZ^kP&5*Q_A23m_vi56;LRH*k@@7F<4B9jyzEfheJjRB zIM20{2suPd_g&rb=v3M1=4h|M(qRy)8>Yt4m8hRJ$H~p+ZT9c8(a}Xi0DODrl@9J_ z+JzU5yJ4+&SCx7P+pRYli`6b3f^kL!iU4AxSSbhX$WuX=Xcc&A&@G?1F(c}-(I-nf z)@Nc8vXNhgV=cQaXvI|`H3p)EFWU*YuhE{iYtyA2PTw9+q43R2Nlmr=%;nOUsuhYh zcMPyvFKOL8+xfamY_XwoQ+7YC5bSq2b9h3+v&@nNnX~73^t~r%oWL)J*&tKbB_FFz zVIhf+AODOyEO?&S4DGdo*?*lIfZ8>m659^s^)lBxtLkll9E2G1^EP^)K)}Jw8+}pi z>Cn9o_12DrFO#W*R|qaoJ`qsO=SMbT8D)+Gf%+sRJ`uu|--Q)kc8H85v-BI7Afrb4 z_41oNC+K?n{_e{Oks6f0pH9sd|X-+Zh%QkI+N5J2~ymV#oQj%tcl}& z2eI?-I1j`3490#pk>a8+tH&~s$GGL6s4xIMw>*~nr0siOZW>?@!>~d-#+_E5g2B$B zpqqD&lI=5`Z#H^aZ4u%np~o2KIB81WLM4f0@NjOwm3;Z5 z7lRnbQmRUv#Z0Y~k(Y$*Pt(2kP>KV1`WI~d`Q`E}?3n`;OO1nZ7!y8teSbmnQK9b5{&=!n`7BwqJ9Ir&zh}^bK7{%S{kR>I{aopc!Ul$@@H}| zh4OMU8k5WppGW*tqUUQPfc&OXGc!aWp3jN1q87#kRQa$pGNIvjx8sGHF7_leQW8i- zEkwWt0Tkt%hb7>kOk}oPz-J<8V)K$VNzw-*=nX~!R%+7pmXmEiuS$%? zC1VdJVUcS_oX-XG_N)NF!N6@xhjuZ2-|95_ZQHwiH;21^gyV&W!HipdS9ZhBQ9P?M znVGETe~BYlnC}Vzd#g0x&7RJ*gR2Xl01ZqviMlC}=e8pXaOiH1Jl!jHQfzG*$OxB( zX#xPRpCs-q7y1w;N*KPsu&AeZyf@yX+u*eE{WIR$wAFJ?#Ff~7@Dpq7;}3d7GWiER zpw1_?#p599X6eEBW=Qyngj+njPC!KL0N;Q09~H(IlWw6 zC-GTt8|5+ae($D0CQEE-4YM6mPNQ+uJw4_|UG)^+wIT10Fka zNQ?g&4Ol-Q+4!(}`o{0}4ym+GLIC{&HNN&r!gzaYV@nu|gwaIuuae(11z04V#l;co zvgRH?cyEkym@tVZ2pu$^>+VDuR_C1=*0Td>j$n@j)H6J2-7ATsQUt$p+Zl!JK$HBf z^-oFvtqR%B)`mDkKyJ?R6GmK-f5weX7XjZ?ggJq!EsqSI_+#gBz!H{yu|OCEX`;qF%cPtpAda` zk3M5&|F72#GJ}&SOeeWoD|-9FzQQFrtxRsaNIZsTJvexzj1vK@0abucwZ3oP`d-m^Uy%Kb zjkr_OXnE+1A8xr#Eo=K_=&7RlN}n20IaLZ?H*HzGS!)c*yT97cdh?DysNdUf8s~fD z1`(82rh*eeD#AViGSAEH_E-ax3F=h=^6BKsi>E0|b9JHHP4DFU7ca#9x|T`ow+(~Z zpyx)NDA7<3;C15t(a{xZ%N6XfbK^j)`kZ%GyWm- zqX~@shJC)>o?q<2T&pU4@QX?w9-nEjbmeeUJBGgFm3;oj=luhJ`RwfY?BrMfB}9@A z=n(A=Mw?KB5433W={q$;&XiGf{r~ zp3!9FNyD{gh~DI=blIK=1wL!FT+Cg5p3v>+1@;J$#7Z)i=Z^ecRMXaN`oP@&t*d)- z=KL)AJ_Dlo<_o}^^0?OvTb1&%ubIWbVMf%G+PnIFsOaUES&&nBg>mUuOLpN44pgx< zkFS=;y#C-_T9Y;+z~a_;C_zk+o)=ntNItrcpWn^sMu&1Mt&rc<+|$aY#M5Y)^~e_c6WVu zT|`AU+{&zske4Dz#IlfeiTfG+t?)7rmT1zsB|h%7gf8#Ui2Zh%=U)*;@0u{b_xsf- zY$NiDZfP%?m@`WtN8XDtneq_}|N5q$P$X1pKP!C&=1EBW6F;2zg6#7|Pw8)Ae%;Nx zKjN~(0Yun2ihefhJv*+>l4o;NX+eAaDS8`Kg;+HLjyPzYaR8Ugcl^2C`(nHv==N}% zR*$6_*ZKj!M3x#C^=7=*)#AQKxH{bHoc+@sPw^{KpvXYL!D)c1vr>h( zQ#yShy2n(4xZ~R<-ou8*U=#_ri{8r5E$aiLiMD$)4}DG|c|3-*W8+iNi|CRJPy711 zJr!ZZAOsh?`eU@6piYAS$yG+w7w4s;fz_#ow_CSWrzeNamhn#gCM^xIxCv{VJ>bb& zEyU$j!t2*2Uv`NznjisX5x1~;RV~BljQ!l3ESa<9^4cfgl#1IRwm&bA`_1o<4;*za zsV&|<2EHx|_Pi-drTzg=Dg^(e1#NrbXGX274aKpXr+*{6K598Seb}XEk^4SVyiO!V9gBOaoe&=q52I`{_FK9i zKk2sj@%-+-Lhw%93tPh>ohLR;ptZv$`CR3-@_f$8%dJ1mI+b|6*2;s@rlIsE2$%J1 z7mQoUV!k&uJ6yCnQTVGz^~XUg4Mi?T+{9=!*-taI6MnrC2P&T-6DNx|Zn7Fq+%%BNj_0(0(9XBbBcQCQ!K zXLc_~K0v#w2FdG$VGOnfPep@Ztn|HLP6%KV)7Vif+yMEF7E!MmNA&wrNP1RdY%XE% z9#!&e)5Yq*I?s|93c4;JUO7nM%~d`^$h>d=OhypQ-%x1TG=3~iQ%h4O-~j{$4oC9V0MQh zFTGeRqOH4f>(bx;cGiDQNG%UyhJ3>SY*JA z?MZdoQ%)MKY@RO8U$;LSGwQPBQGLzd{;BCH+hEDg`)6Kc%QBWKgH4c&(bzoxx+ara~fzxkaDy z)uAuy)Q}lv^!tz}M#dCyIX@FQbKU2t?A0zw!48{~d!i^s_vkjAD4dCZPzB|^Cnl1P zw+X$Z&}1wO_Q~H6964(}AEUtGP-$Q{)KZK&68L?UZQ$k9F@JqbK;d;9G?|t(P&sA$ zPT^f%&6AYv-W)}miS}ZMuB&IQ6MR8KbvRKyEuH-f4F!)H4P_dKgom|6qnlOP+EE<; z@8R?$8rJ9uWh-CvJ<($hBh2p&Gh7pli%KW&iGGQ!@h25gy#4gVAN&>nkp<(IkvM_~ zD6mv$N?XX^5?Jylal}mJs}I_HZck8NEw027nPJ;I9sqsXMoldDCz2xvI*THA2l{FU zZu`zTUroghIt%5V9Qp=WK#1q6$i{$6%A0@$;x8)M;vzWJ3h=x0Z1{x2GO}=7etsB# z_b>FIj(5l(t(u~RpT4#dbF^q#gD1&cg!Y1(@vGnqNprORuCF|V8xM*Us%>92qUTIA z^uJ2PRPqTlN4d-ASKDsJ~xoK!ZYu*CSC#oSw7nMzO-+w*s0%A$?7i@ zC)G(DCtIbK)4`V>%g&Zgo+Wi`qNC%n$=eP?1E)0>mNzNmT|;@!Kg2Vb?XGlw5=|v| zGynd|(C|x@9o0d7z;YZM8EeR_R(UvJ#o5!MoKCdF|&oz2isbG$|Sa!m_nKB31>DR+qV*KA1l8~ zN*Gz8uq=J_OsBhBvsd>`EvNQ1wx{{($c_6m93|2GC7(#^Uml~&P9sh0Z1D0VY$vv;+2O< z!rv>lE1PiTVpOE1@T|dq^`WrNfq>8zwy;V)qmi^b91r{1vLqd(>2}rRNwoOwX@+pR z62_Spnr2V(+)Ab${yWB#=ULuFN>%H{J!Q{&v z$wUEj(P&aJb@>RdZiEGvRcLyduo-(4(wp31^KFOF=% zw*CAMnt^$~4ay;a7Uu>NPdm9lkd|uRups%%faFuP_U59RfUe7OcEo4}l&_W5(TIWq z&4sZX_w`iIzHYqmjls=}h7vvEdE4U(Fd%fKb9u7%J4XOJo(Iw=@-J)Iic-C7S$tEu z<{kq??>%1ZLMDVG|Fikw**7b`RgWKhXLsA12?x`@zq>p5q)aoW?D)|kLC`*K9M1ky z8S|1xsxc5_b#S#+luVrLBY#DD5+|Rf{imz4mUbC|6!187v>7}_WoQY%5BE0l7R38)TKl|hC)Xzb`AXa3@uLH?t1F=}b zp;-Vx6Mu?OvY0^J!KP-px5AU9H@Y9aDJpZJdA?fKMt?-)*~HD;ZTC>PWM|Y07y-T3 zeb-pXOp%X0pH+Df92Zz3JmU1DM-28p%R~uW(9jA-u2Cw&D_K>5P1$RT2kQ1$#itni ztsM3IwK!%!6`J2Ah`1(^e>q9{Z&%2r<_f zfEmi8RC)5jm$b=SW^yAsi5P}Fp&xyAZEpH z5;e1dkgefTPe3!*s0M>7IXdVFyJ9Cl_ho5CaSBqhqtzZvQ=L6kHdmRlyjGgJ;Kzt! z0HPxN5Ol|+&K%CaMp<9~#-HBs{h$(={o}J4RrQwrF@IK%-ag<7nGw+m3{hxCQT*Gv zJb$>tp8oHom~1qJ@E*RIUvtTP|F4q$t7QKw*}qEmuP1xN&i{I{e?8g1aPeQb_%B@i z7cTxAll@;AlPNAzBdFnj-UaY)eD>dxAhb4%IwG%%h6;Y_W)krvkZd4W5H?hLbeF;y zyZ%UA2y)-Av}}-^5;3rYVfrgWVO201RYt{Eq4?9c!Tn3<+~!v132)T&_}S-=^O85L z$~)KiUrmb5B*abLg;iRv#mASSyG|7L6-}nmlV;CVo90oEyzX zjGm8SN!?K7w}9fKiTdO*48I-74@g@g;iuPRqdSrb0twg{FEh?q(VWRy$%Q0zI2^eO zUDQOUbBX8pR0OQfAH#1ya2|Vu$1gAvFmg#<7-uD9xG%ddA*mgHhU^LVclQsMt3tg3 z(}c1w02DFwxc37$@jLg#7PmLnviD)+Ygpy@IkVg&9EEmhMS!kXoEZL5RKV_fH4(?j zyhvua&ux2XOHb`(ozWgYp0`)Yn9L`tx1rX+8JWdbvxd*r8Yiu9KO{C;zntt(TiYG# zgOW#YBub^e`cE4WS zP|X_*Px!+TvnIQ^5i6nJO54etAGw2UwoO`=7XS|KAHrDZeaWQ2yhJy_vGiiVO)s8u zDcF`RvoPapa$>#u3uTQY-b8z=eH-R^qgJf6R=yrQ+^@=Zy=HuMhKD1alXxS7G3De%#iPZSmAZlG$fr>-aRsI0<=qjM)4d9DI&ad9;?ISSEa+ zM-bH=Ar)q(^8R@CgofHnc0n~fKpc^rdp`W3*5s-PAG>>PMt4&AcCF`}02K8wqu(w= zD!60Rlx{}BRsY)xP2eb60>lf38(;t2yZFL0J&mrMK=;VFi9%knth^N==)&g?`V-s5 zKVcqcOQ8fW5BE4-JGb3p8WbNK6#{b=gacBMUsEKj&=jgbUcOZSTdIb3K&x+Y7tD@G zOMLk!Epd$5-1qFHln+)&x!)Zq^$>agP5+a{gi5B4@Qph|msG;qS^M5CIl=H8?DAdQ0ZH@C2H*)W~t< zy3B0+GH%%0Uh5n_9jzqRFG*%D5$|nG<;+xfpnE)z9AAZ#fL|mwE<&Y zX!_$sxxycEf8^Ldj&DJBKuajXWW;HMfp2u>P4+`ZK;U~F16aoY75a^izaT5U80cjD zq$XmNE=1)!8m!JgiiI3%{ww7M4eAf4l7m=6T7>fg_~~?dUa`HsQL1?I_6J0# zbCP*&itI*1QjHEfc8tu?;6>WJYsB8y*rJSv3jlA1JSxk4sJf(_=GyD}M`pC8R$xIE zG~O|8cHk%WTm(@fojxd@W0x6`Q?-7N(ndWhmnpZ;6Z7Y+DnC#1q(}E|CHb}V5A?_M zaQ-SW4@_m{CI zH$~WEjipgJPM5$2Cdc591v>N!aOHLqrNZibedP#YilC)Sl_1q^Lb{U>-yg+JGai%| zdylCB6BbhAQu>4Gc0Sk#iwop%=FGJ)f3ko;4F_D~YOFb<8lzXbTG zA!{QarOXS?R}rj~?EKl|W=mL6ac_Yc^t?|#!*Omz_eEvy+5i>R&U-7*SvbL6UP=Ex2stC^uL3Wy8L>U;u zCUN3c&;lNff_kXKkP{(<=(vO`0tsOg$i?wQxpc9);w#^xl4Hpr-fF^22sn&P*O<0c zRkIWOFadw&r9f~|MbS=)sDXPdfQtTqX?^DYf2;Mb0eoLsA!wV7kA(|y-z3qlY!Pmi zpqO3QrHIa0yZ}gd5%<+p+Ah`_%yESWvp-}AL?rG0=EVlQe_LXNtbE+%6X0Ezl|ra< zJ&wLu6CsdNLS?k=onj{UU+jdL=)%X1`HeNfk&Q5sGd+tt#cW;? z0wklEflnr5qRr_IG(xag`3XVnjfS};nqRt~BQ~%?^l<@ls4pY(VkDpZb#l4^#BPYW zLo9`q<9VP2}6sXzT`5GVx<)-Fa4ejo^UKhMWYS0aWbufyz?d-LcL+ zm_+D;>ni_~VeeKRFqo!i!XYHalH!(sm?$m-odZ0+P4l*#6(pfS5^OGR34leHn z0U%|D6L>Dy!**m{ycs%TF1H9B2{jEsfyixsHGyIahJv^0A9Gy5qh4EMg;*N^>jkeH3aiWI)>m**Ot>MHTFD!C;y z{?7v*cW7ZE1Ddio#?Q#KwJ9_x1)dEpj&|Pd2J@o+v$&jpr4Ui^8O5wIxGGxUwI&*N zwOjZzAO?iurAozDCCKI|0NaV596vnu&AtPZ>;kwgVq^zE1-J^$N zE!A_!Xs)lBl0)96>f#U^GGgtBuANv+c|El#Qxbs+YLYdo196Bw`#Mc|gdp zmh&MgenI#@$wc$CFBnLObfO`87gM-pK|k}XU@Xj-#OZ6JdoJ!PgfM0%|E(t@Sd^|9 zxZcxY?b9Xuef);vtZ$XfGycQ6fjLxLctPP&v1x&WkD1{COZf@BCwBrD(Sk>RvuY`S zSV{kRazflkv0jsP<&+tef68jA>cVJ-ND+>kBK2WD=8N^%I0#pM;4$J-J?hk`zi#&X zRSi{BGFrk9lbKyq|H%G`#(!o4*(Oq<e-_w-PHw7_3YiP{E7;nFY}ey3-&M z$RA?UI5b4W%Bb1NHd%JpLt#RqK4B39?aLx+XES~AL6r`%h4~Teg%09N8LcJBIw|~r zO>Lk$nybI8T{QG>aq6Q$&#^yROh4>4mCXbi!)&NP`(pwfr5ZP!f7h5DBrT zruJ{9nEn=1Z}Y4Bj}k6L_q7xAPV~u%&x?=Iq6OQoHu791A0bt& zK(z%tZiLJyqXiy@Xw81Am>d0q(dC7Yu*Xn0i+hE*e2ZhM+W%H=pEpYPe^;v@wtK;f zUy%lF$N(TLu7_5Y>&`Cu|2~j`{)Q_+5ZPIdzlh=L=P>bOtYU6$(jEe}m85f|sc?5^ z13mLj_#V(5E%oM66)(xScgze)d0%iYYq4^_5|e!+*jpO|zW@0x+t9Tb_xq!P6MkIs z6PBg`lcY0>BF(SGd_UJ31-IjS`A^wb2I~3%`5)_}{!#Dbzv=7YumXm+*Eaifc7FmM zvAJN^3*LXc7AvjECL6%$B$_H*)9EQI9(xZ3{z)|_!K~+#ZZgXgonNQy=JIJCGo0=A zJll5!(sziGW_rblB2^ZJoOgj0n4h2Ke8wL7RuqBFmPZwCkwkB@&jPUc&{OrgKp2?M zq#2l0AWmoYRW|%F&N;B+{`!UtJBu};UGYAT zu(feJ7GU8YvY6~MOFcHM&Q%Xxx)6d@1=2tHwdy5UvJJJD(iJBw}HE zhv4q+!9BPIcXx;2?hwHV?!n#NArRbM8+Uh~Cg0xwv-dgQJ~#85xtQr2ZkqS4uBx@x zv!3;=Ds=&UaZ_R?vblT$5>)tiYV!r~wZdp1L4Xi)=)qyL(^fBmW_2EooEFL#6 zdm_1vlmRz`^Zz5yB+-VqIH1bgp(t1WF{w;RFS0TY+w%}-jR)#7H6`fH1G{>G)M@IM zP=2N+jfx))1qT@PL)-M5Bh1>RKNtSJ-zS|$vOgI?dq{Ntk%)O#(`((#aL2(ph>B6% z0!8-EFaUS#23KSH2p1sJ*+;7io)R`D!@If8r4P%=xDf~$i2jDj%o|JN99dGo8o?!s zI1X&!98^oyN06V*_2O?c>d~l-1vU?lM7&P}$4shkCn0pD778E*M`h-;N)lWrfE+?J z2$WC^`KhBl&ahUeSRtE{t&U^ft_sZ+-{V7`l`cfZx0fkBFidb<3}u(q(=G8H0xtkl zgz9ZeUo!rT{IXBvnMq^C{HEceQ^EjsgvvpZdah+s;!=ZRJ1DM%yY@$l6*hf=rU);J z41Tjb9vh+LY}8K++q9-3MtmOvA%BX#g$ABVEB1(|uQc=!!KCH5wV+nJKLPv!PQ&4l z+T|k&4_x*R_WT7x`}`W8igh7Louw-g z@U4O%pZ;i4ewo3ItGy|z9-LtHL>iuexKO2N31IM#>{%fi%cvmrO}SD63I04idS(3E zgVEN_8$}9!eK)lg?xxFRB2z2O7r$~17NTaBG0dbLhZX|`eh|d&1P62C1gjMB@E(Tot05jZY}0Mg-)$8aP$_*#(vpM^!0KpFr~&szXd_5Y4F z^!;*hcZlA%sF0FV?~k6a^e;VOw2%!PP#L}ISW7ol6BHegN&iF#Db@cT9p0x8(!Qre zfczPxEc_1C$SvMEt^jyi2vA^aJ5T^Qf5XCmIR8He0&42`t9R=!Bro(I5m9~)o{}QA z-yp0O33WUzhekFmZFa;PFq-$yH%F+?8Tmx1p{iWG#oXI14_Yh`b4Db0}cRn;&AFI0rc;gZ75>+uy13 z?TBWvdgHd>4zWP3s5U*+X6*GaZ{oS0aJP|7pc>h=f|P`(#3t$CGE6LggP@iVdb{eo zkb@0FJL!hmzn6sy|I41Qr~7*@mkdli%hZF;^2E~YG3kt0C^Pm`Yj^Ut?$*QM`7IX8 zmg3ll|C7{49iYO#IZVavK+mO*#PL!ws)@+7ZZ^Y;izcNZ&7GxdmDa}ytG3xzg|Xmo zJ~!X{KY0K7Z8}B`VO(B3QAIpFN2+M)0>S#t3}w`ib#%_RECNle_>9~lJ$Dw4wfQtd0{7#ZfBZv&vh%B6R0$ESEQvm6D1SZIM4*rMn z7!>B#ShBj`Tg7(ozLsJ0(!_dpHF?QDw_^@wp%17perVs!hf%Qe&}%4(?oB`gs|N(a_k3EIPLLZk5L=Zf8b zaX)|=o-usG8-xniq+?oZx(jG(vVg!NlIYP1nb)9forkFL1@Y3LcY@&k89#tq;592P zT5ft|`KSriAp8#S9}!3ZsJ&&$Y7$I)2^FHdxXFe%S(OUbSHB6Y;if0H>6rASE=IV0 zqMjW`>4|3FRe~Dq-vyNb{2HG#;;;s0`m{d$Ib;IVa1{A+x0i_K&Pbm)`V1d1T% zFVlg%E;<>9#5$r3`1!?j+lO2mpHg!eFi|#tw<~Wgk{_s4K_X?M@AAHSeR*%7d`?n% z5gSiF2buUHsx$kc?+~dW-B27*o2gW^w(K%CfE7A#I{(Ay-=bDf(tnIvU@h5BwlMoz zb48^dio#1No0tIlu`n;5FgEb#+wE)4;~plCugE+@gCV>|?wiSiaPIX$)Baq|7S{MC zp5iSB(jGZbMho%=f&cUd0f3e0kdAJ3Jw70n;?Vhu?Yf@hxDh1PRqO28alkD*QoXC| zi=aG`toWC=brXhns5fv4B*%{&s>1uIR6R5Zs{AP2G-@tBs5Np<}z({ zBqdTRzD|5!^e6Kf3}BqG<Jb(QoSwFF1IOGd05+Bb-K7_M@Y0l`$OUd zg8*Z|=*OyHne0ZBb3~T~@+EQfyF(*F`zBpH9;x34gEPhl8t%Iya=W+pwU-($enqU2 z#ua;`Q(9G8jMif@cAi8+GiuFc`9*m%?3qj{yXu)g1R6HWH;0U%*unbV_~Sp|vXrPz zM6rAjq%vPDRHqypF9~N`qlHKtT=yM@GfAyB**?KUkS{t2E*w$aRT(KcVR9+eaxG$A zuHswvzban6Ycop{fIDk$@4Glwb#@JF$@iQpx)M|#Zu}VbHc$7ZUwBCK{hWDP)TZ7N zF#RQ5&_SCSoj_AMDO|#5ggGe&u3q)P%hSjSGJn3g1_pbbM)*$i(0KVgy{5~PY`3r( z{Ced-S^X6M-F^?MKdrC~tDtVTuUxQnO?vce+deTq z?6yH&ilqXj@Wd6Z6Da~z+&Rr~9E1sAB4~-xeHzpcke?a2t2acP1Ti}h(q35`FHm>4 zXWAmRnh4ef(S(w_VS*Mf$S*NJk8td1lQQ?y@8yChzC2D)yXG62-F@iycTTPP*Qe~n z7dCD-WOq8g+t(Y+^XJ1%B9pmNTZ-dQJr_jb&P&(!4YwEnIhZNef0nfBfm4(LEZeQ| zsQ=Nyxg*A}mhtDhc*qbd7Q^ovSa>_@(zP;j;uz-=5jsA_ahPc^U1{#8*b4I2i>kh6 zNEwu!e%uJjaU7 zs*AXvZjpj*%;cPy4lRk93Zi(`GIL=aQ)y#Dbv`_ETr}~U`F<}X3EGp2xmG|)oPs}IcGr`ShL|5R6Ysm;1Im%xF`yzCw4ho}xV z>~lr!vO213Ent-aZUuZhN9Yf;9{J`QXNMjvtDXOi>j+)bbWiY?0)nN=Q6|Bye7f_DrTcpgi-0-JYWMM3m;eRi= z>3|~o-PxE_?1uQLCmk(|_I^#*o&VjiItX;BA<$)WrdX5F*`Mf6@Y)Zam#%{ ze(VweHxvIjqCcOK=6g+ULgXaFKKW|}{qPggC1k?!5ry1}89uWQ0kr+%hkTAuHZ>hpt^ZQ=_>S6Iemdy7;^BEhj{Nx*AQeO&t z?x*S)svZ~h+n#F>1pJ=xAk0pBvzkQ_FM5yN@PmZ|zB9a$um%E`R3w?Tnk_D_0e{Q% zqe^xq`<_i=l0y*{uvE2z6Z&~sMkUjsP#z&o?#$4o4yY+diRSkUQO=wx2w(M9d;TGb zbek3al+yo|o~q()^;T!HJYv7BYZJKZ9}5FAxHmRpWa%Tex{BfrbW_Zu>(IdYP~>qQ zw_e_9FW2=fSN`ECkVR$(8V!tpYINs)(y4Y2ZMKQEC4+l%VTsCEHoF^YF_$sFi_F^? z-XpWWn&8xFg|i8!1DxvGGE36N_|0ETK|rkHZp2i=CZ*C0XPzMkn$FsH{0C172{$hD zTEeI)F9>V=@sX3snskiAdAsXNmkaxY^-yYmh=YQE424+p=lxJ797{aBGLk=Z)0aQ4 z5orwe_zel&!)6Pq#-nOD>M>dRtG}dZK;yA)-O9eGT6gd9EanO?*5NHlA+#w3Wdw@q zWzQs@Jnc`c74<-t7W=BzqpTcm)#bhKyAL}!a@jm4_rCi zl(U!4+1ZedI6#48If6r=vOgQ%`@-=^AeCBPd_8W!U#2c+NlTbuL_cq4+d-7Tw z=xkxzS98pE)A|gsoAvAC-0yn)*;7bAbc_);sHc4i^?1F=hUgK{lzl?lsBHxhu6fJd2MNpH zOb=S=fgpj}WAMpTo>qCYZolquMM9CCrVqAMa)s^FOI$w4#nPrUmVs9JnqLO+1j|jK zcPxpV+K-1Sb>OJvxee7uKBw}0KWoi*eh+%7jHSxdOj#UiroLPvknvOLT2EC_H@Op3c`=hmxMN3#8%>XDGV0Yq{>n z>`PHF=mF&y(5Y^y|7#gYQ7{1UDZcRn+;e|z_yXoEzN3rM69&Lo45u?aA+)OXVt~po z7~GOCNs~SrU14)y(RPO;F+*@jG8PCT%~46XDB8JEsAC>zx~HH!AVi3tf`R9d=-7=} zVJ3L{MPxcK!b@Iu<{3{+jpwLXK9Ig{a(J3+uwZI;D>6zH)gP8-ZY+IfvrRHUCC@kL znxbAd%KpGf`So)KbVHGqPuH-7sr zpu&y0x>Fn8&*xDAxnodr6V7@X)J0DA9Yj;+gb%n~75)bxn^|dN99qgXw!FLi`find z9>u<*M@%rlNy}-A6RBMbr=9LRWTXLqf5zUjS{qa&064#usx065e)s>$_e&blfkag= zmuC29Ltc0TLysxwL#x5-r#dszuJx0d;07mQ9gIVH-!s_^-C`HnK`G;4v%=zkuLs0% zE!WkD)OKNQA##CFCd$MJX0PFNQmBCAxDRd^r?yDuWMeUODS%b1`7UMaqs;6DbC~^8 z$uw#GHzEty{=BgVrnLoA+2oG-X(=9{DobOqf&oLT)&298TvX`$Mw&BaUORq1i^BVP zPHQ_g7Qb#@*aS^McM#_pKk+{~&+o7xcZ(y6d>28NGH}_9$M7?TPjwa2$3aShkn!b5 zw?5oHb?kua zrKJljk?0ltnr1PjmJJ2Il69uG208Oo*H76g^yvoIi8CX>tkE6y?hFL0Q!6qM1__WU zf^3Qmv@#fl4}=%qEwq)@uJ<6gocsMLYo#j@Anjpz z^YbP3iXSr&VbGceXyd}nJ02U9V04b1nqBhKJ$@+G$%0&;TSD2%!pF&+19W5RdT}MV~3Wc_Bw_;F5_87A7qsDwOyWtz3F}!_%Wys z{{wDjn91|VfL-wQl^kpK??8ac=4OpCGiCP5c$R@ECy;GCB|o2>()&L%3ht9=?1s^AY(nkjTf*9)R%=NIT3F)G`#L5W6diJ+94s`=wl*+ zlw$I}dNy@5&DS6x4 z0hjAE5pJEBsTXb84m@y92nBm8H1X|r&vK8$d<9mfQIP6`|K&;*^!^pS&S#mfC4871 zPe8aP*K@&6bm55QL>{L@Y5W+`X_>R(e%yyh5pXLVDgp>e)B-8QIz%8rJdnqDrM@FubJJfaC78De^0Z zG;ftM_8|}oo3udW4ov84T2Wr^WA3qoPUMP~uESXBpE|33zF8Ez+pgs8q8XX=)y~w` z7*O}M@mCO_H7m>;-xuCLk*m8Jm{ez9Qjl=*;kvkt^Vm6)f$hOpL6|$78Z-G8|$R z*8aQK7Nxd!H=etm1SY zh2SO*%Bt0PeTp)9Qh2)t_T70*)>$QD!`oXb#`z2tS@DBIB$^E<6G`b@lRQ=!pALis zs&W#?8~WB`@xg7+l*j6pyt)iLPk^(;( z#^U{x0sh5Gw7w5E5ykxOH)y8ZBD=(I9o;|nOT|8IA&rYrl#3)z$-E+s?>1a7o`KDK2#wg?8X_pgt@q9~W*_A5z< zA!0g`anGSO^0?NH84#xZEEn?*!B6S&BJ%*}m%if~db2Uy%7qV7X#ZA1i;`mqT!Y5>77H55fe3^qWe8T#giBXF@?&XdSZ9AqG6^uO0{EzdfJq1 z_1UA}3YA_%T$REq45wRM-HrgJbs9fyrKEv`1jN1I;b8}y^Li1+u0#GQWR}N_?X|lL zQGL;LqMF}n_5-E{JI#BV8qoRO8q_cEo#%dmkD#W-Mhl|TzB>nthQuRV6>}+GV~M7+ zeZJ?(>sReST!p^fQMLUXU!_J5*NWGU-AHf(rRnWFJ!I(=nab^wqJE9yJXG;6ajB}; zn`;S)-8|*>>kbffX`DCU>~*OH-GcWUtFF)KQcXMksVNmxst`JCbsq+P4m}Cg7omPI za6`0pf1Z9vNC^olwu~+?bLcBXvOQSzXbRYG;NYZ&KMa5L48wwxS(8fspiV+XuW4Jl zd|i2-dv0lYSUqWRUfZs4S}o~l_bV!{Xel|EJznzp?UAY??2|p8iz~(25l<4!n8a%K z(@q-tEVLuQ!zVyNjJ8G9UPk)Q!-L=B+vA}C2Sl3^3I;|*xT$(B0?$ZDO_bbhJ zaqp7OKd+#CEZeEl>MimL%b}HA1ZyqC<)=7S&bck9zKKX*%oFb{@wH~wql|RK=L56r zHCcG5IO?wpn>)bCnNi$43s9NBs8dWFU&dd>E#SFWvqH%qx~*1x50GAQnfSnAlL-&w z>veBNRRt@n6JQi8d2Fk_zeO8d;IZm_(>eQ!|1{zwCqDGikNYzjBEC#&xadT4=jhB2rBk+#s8~o_lUTYw9?bbyXN&yF9ik-B)R0O&J6|)S2pxNk(UnU^lyt%HSI0nP$hHf_BX4Fo{$W4+UdPM{0V6OwwbZ{DTqvh*Q=pdBxM zi!|jz=z-AB)o)eF0WbUM#T7(U27LAVFX_;3Pkw;6%MFn;OQoPaA?RH3sozT!c zUJM+Duzp5RqNam>%D~VLI^^gwzaB%hLPQ8Zm=^K78N~&-cEUqVQ-+Ksr*ZQk_Nu&@ zh$ev0V29Ie+1ZCMW#F%Q)hRMmYr>uyx!BAAY3`!wG5wYw(rnE4{)F=n5~-fyKPFh# zR}K$~gJ9M-RW^|+@{%!Z6A*#w;`&-#8ZWgGK6=LXKgZ^>7!zw=T~BT^w0}^*XwI(8 zs~?w{zY1XuPyWt$R&#H9Fl9!&4`UJSBRLi2RmIl8^62pARY> zea>-d)w=xy0`kr{IxX+IvkEch7bd@{J+1&rC7lU0(wice8Jya0gtXhsimR{y?$yhl zH^!9!cR|V2N)4B99H+fWwMI!QE3@-pMlQ6d43;pli!jA9c^YsiMeL<^@y-$cWv|J1 zsgECX^yH3q!;e%FH|(21%c078wg3S$J)Q9-vs?|QrM0Dwn3MeqW&2ob?B_Wap#Q$i zT(In>xW_PhDSDLT3rox|W~qWQ4H=3!r%7b;I)#ec-W1yP?7bCdbZ57Vmz5KY+q1LW zyD*u^5-d42-8*GQknP2TrcF|vh;@J~7L$lzIFn1$xG9S<_4au;vb-8kZg-VW{q)%U zMX~K>(vf-4r;awkcm$0l9Q1=`Mw@v#eP9koKjo-1gVn!yiJLjW`FXEGx&X1glfIK1 zW_>`!hu5b_M`1#Qm%pp~s>cKWM9*AMx;%n$;?r7|VH7{Ir}&`p(V9rRMWIalnZ`W` zC;_DRpj%{yl4J8GW|R`0a?3I~)zV$ypHzCDT8An*d$w5gLs%cN!y3hzJ9sDa%4z_d ze5NY)IP1yVgDq3M{$Th?%>U`H3w7}lrOkmgagXge0R zAzBrwR(emJpjdiddf5pz&L~@tfbT9>;ogW< z1O$aLk=;fTY^!XUQd)b}Zn|g5^85~7ASwT@ zo!mUIK#I^QwhBilpLHQRa!@CVm9pAV#xD5?Ven<~XvvQw-MK6YbPz8fYTUNuHP=qy znbkcI2u{6%#bZ&I^4kiNYPz%5KbIhDfw=5ORY_q|KvhZNgFu@xJ%?GWSJNaQgaK}_ z)upQ|!daN8Iwx%@+k1IS@t|kwH!6J-b2KhQ!5DtQsvt9K-GjSWr8YC=obd{z#tHcwloO)EBsFMyoDscqX=mx%ceX z&hp}}l*34Px>R@3UW#89-XHJv8km0D7Q*MOgJB7Zs2BtDDQawY023_m>=a>!@V@3j zez~z!W{5`HTK!2~`vD%TybLZMo4yzUGa|k0Rg9n*L-4sEtr9WKi7 zXbDTug3YY1-xlJv@H|*FIikrxXVmI^KBLdYwQLH2*Vu2>yyVtS%VWHP%~FVfZp2Kb z$T*Btv_kuu-(~6&rYB<`hZ(&C)e=ix5kGU&b9y3D&Z5fNvJm-~ol6VOO+-l9D;QV1 z`;_vaADwx4{6NQwd?WPnDV*}}LQLiL5Mdg92n`|~pSJV_t%6xQizeI38%+Qg)y-ny z!;Pg|Azmgg>IoVbW)>Blz#1JWWS5r`M*a!egtm4SNq3%WT?-33Kb0SOW_E$l^q`=S z!(8b)p~5jAw}9_`mv+DTlCRiUsLE@iqVII86yH$sscHG#SBc*$EqqD^e9lbEKbrXP z=lkVi@1-%>-JXf*DQ=vFWM)nq=X9Xxi5Q8n_RoXxZn@Ia_#v{r;+=4^5L2(Y@AjcWII;~?-{Zr3(eck)j0#e*@XNM0& zOt@e3T?*_zahB=i-@FGNf?dm5Xx$YB=HDdnM9JPDh2_nFH5cMW`iI($!@5tu?7?;F z4#o+_eqK$3W4-6RT9{~$&}QY5PUqk~z?|mFkH?*p-jAO8`~sg58q;CA_(0{Uy$#zB z?jO0;96wfwr_l5X$vzc+x2s^?#63i%uQhw8?lV<=5zO1Xud0~0RY|)Sx~0bc9_wM; z?Tq%aoK(0O<}OD$bDQ`9qmTG5B#vO8reVg$efZS$5+;sQi!V6f2X>=(mk9?(23ppx zbxOn3!0l=M!wXAZ`D|N?8TQPfd|*>x9k1Ek^=cV=`TWpAFLeHK#bAR%RCl z>qo<+9)$|Dk)6^6qFodb3~)no(73%<0RT)NsgJ@cv<4F1_y2w5=|)yqWz@4_Jo{aQ~wITVJdP~qRELZf|PktfIC-D=nXx* z?@~-<3%BKmlA#L5<{9DUt4`r-xVt!VM0N;>Ie|wnmzCGHWGQ9Cxnq~5#fGyP)iB$k zTriH}9}(;v-{ubtN828$<4-jp;s!05xvM$F!QxZo7yx*RT*ct7ztT}8#%r8dFIWtD z{9O$L@xqn~l-15=G@;$5hx_IQX5YVSYU%*uiqBN|_<-pUealhRI=jknf;IE6(EGgU z2_gO|0t?_VZ=6yk)V1GxP{8AyevO8FaH{IYn2vy_*Lw0WO`#YPpv7F-U{De-=%L8p zaXnTCo5%(29pgGgSF+kdS!E2t-9MwZ-*wlyh|F;aG+v*BFz@EOLUZpNmrRLzsv-DP zsyQ2|U1EP>$U_vFpD{YnKN_rPE+kBWA`J?i_H6$7NB2iK;Yz!2P=7A@dBJ z_pq9!c7IF(;lr=k?v_i8E|XFEptCAjqQ$C@yNfC^eE0Y@r**&cEJ&(vb^Ap%N!S(&{i%yq`zBb?TKoZgnS~mz| zq#Y^B4X8xTW&;s`mVB}$wL%%?`u{b}Ag`WXMfKN)hLGsdo9vV&n8yf57S1Ui()V9e zuSiBX)dwYc>?9DJ?UiD>_g8oewafLd8q`O+mFL4b)%T1)2lZ-V$_FJkPFNjILe%cZWR=l*=p}^I;BD zfEVLqI86MyDnj+m`-=x}`1icsl#pzla~(oD^j3d`PDp~30#Sc!>p&85iNrFq;V?ER z!lxc(+zx;aB9oTpEmlo{ukx$A^~d+nxN%@l6vLW$dTJeaJuS)XsO|7~BuC)hTycXX zr7GnQv~cwMzKaj72d7?w^PK~R3}K3{8Dp!Qd)1=rJrg~D`SEYaJgju^cK8uBjgkGB zvNv_TJ?Y^Kp9o0OX1YcO2xorCURw~rw*xZzdTON+w)P)F{>xX)n1Fry)OfuHqrijl7(hvKV5A%$&W1pVQ3J|{u&uGJHZaPd?@!)&fbEtX(E(3CZN zSHCihY2LkWeT}rjY@q0NWO8-KZukCnB(SA4p@&N1t|pnC3 z1jO5Tv$nVvt;kT5ZGI)MqG=`{iE@<$rN;3W(}>MPc^d1Kow<;Ga!B`aVH1=}vD24l-(f1YoH`$@AbU$LxOaw9$*tkvFN`AdgC&W9}Fc-hy_*2B0InbrG5$oN8xSPKqef4o>C?+*01o;~qNc82lAJWGx!iMlJ0rLD+PnkrNi#&#^?hS*&d zgd-HFg?tYoA$mk{=Em%83TXH`L2~(-)(T%6+<+8cw>Ic7%8)tP;rFxwQFl5(KFP=n zd&i2ejf8MN!ch|+)H-qzjQ?kRul*5+NZ7)v^ngC(chh%83*Mg^U-mQ)u>U}~T2hFp zC)bi@SXXdX>6Y7*8Wb;|k@Yb%6~CWW3zCWb3gJ^`pbNMqiZWJvKOLhdxkUzh^`V4) zEn7=p4h%yZ#GM3h{EW}r>D>Oc67i%k8L1a;y%gC_{-!YhovPqLgkxQxOON_jES$gQ zDg(i7JYS2LtiO%lhl!3>#NYa`E1kdc`ZdGQRLtgiQ+MQAnl7xbq$Dy$v*HY09oqsH zy8P~5{CY)wZ7`R?;rZqBX5=fsh_3U*sw{5w+ngnI>dLa2bSe>fK@zU0ae)iu5yAOM z2x-6XvVm!E?lGK^P(#T23lc>BwVXxOsFA{ayms=~GwVr?5RA%S06TY{pp+~?44NL2 zP3ShN$pOZ;7|Lug0kHU|I8S0*;#OERwW&u(uE-Jr}j8C&|1j>NcJ|WSbR51l)Ay@5Qsf% zv2x}F*O#)ms5PKDdq1T*oDvKsqx;k!J-Cak2xSenEWu2)({a!2HWJb+e9p+c_OV|c z0po2&#Lzx1U3rl{kBsDF51sSqJLKeby?UuM`#LqMS%98>4U!-9P5 z;f_S14b&&nAgfJ(zXv`p1Oe~t_`zU`UK>d^?DTnPLZd+8RiYc?6_i~a_jPt*hi{D4!6{*;{j+B>eLWg3W0Pgw-MV*%M07XRXjc2Tb zUzA6KQ2UM*?Tgxx?^iR~C_Z~J15jFmheFD8t{xH9H+tFT_#IF4IZnN(pBIPbB+0}) zWU5f1qXVJ@S@pJC%)5iWhXOZ`WZl=mb{@OP*^qXUi=u1P$#a6-zTJw`sfh8ydM zryKjff)CV8?PwXe`u|Hvny?|n)qfIlW8yn;o3)!23s?9+u3R28r^02nsBs;E0)&nN zt%(md*Zqt6%#{6ce{D}?;hN5TlYN(UBK~uMES^!Jjw=8$7gi-O;4rdlZ5FuZhgUYb zGM@9mn_nn`{2p>v#dMdXp`eqT50>p5aEI8v%n7@FPAu_+I*Q#yBaBf0LM6M@L+N(} zE%%~xQ_16_bx*U5S_gIVg)n;eg>&13JVJi7b4c5*SpTK!E|6H~5Qd2fR-(5inL}?GKRB2c;IK7%NuX?ZH2SDgT?4;xRft@eLz-*mTi?j8m7tVJ%m)~mm zE=hrct{DnqHus5S9;(rh#=FM&$Vsj^nz&mCbYrJ^W0soWQ>&-d&`qcX$_JyyPh8K} zmx;>@%t(QuN#b?lR++V8*syF4iw}$(m21>9n*O~)R8PVgH4g@JV0yi2hpJF5Fs=kZ zF&Q-`dTLLD^Kk?(q?O_<9$Y zljaRGdtbaQ6v{m{@VM72OJII&EC7)^fu-SC_c`b>v`==~jpE~Xm-KTOK<~YY;vl88 z+tHQp_4e&Z>~ByDJFT!*Z~&)a!Qqskm*(^CX|)HH(7TAr$1~S1Mtbk(9GMRi3%L=$ zag!$PeoRv#vhzYyo+`HyFuXD# z7A(*gh_*D@30wDd+TBgR;(M>XZqBW#c>&e$B9aVZUV-)k&0E3ZmZ|gr+-*roUafBd z$(;O-{N5)W)QSbTPQ%jEA^GgczAVc>(k=SL8}{Msu^3mcCT{iDU?pVV10o#W;hur!hY3I6And#kYAUmDu5$_`u3R_FbnPyg$&TsD=V3>170TN$t>fyT0PC zLuc#{0toN!EVZOc>U7XP|JpGG_)KOwCg63~&&jCsFjQI?4JD*DEYk-1=|Av3$nFih z@F8%%bU{SXN;*=0&q88y;@05br>5d(a!S7X5f^zu9J!qpY17DP(KDp8(|&z}GE1?o zf(;b(kjv|aE`xM;zqwxFMN#%^!uJzN^Ng(kC>7|?+K55(T#UxG18KrSkB1Gynvf1E zhn*U>UWrUa8}G0@uGn@HzEBN<#Y^>nRFO`y0dRfP9@JvaDLIv?pmFh#9)2v2Apj5& zD4{~fvN0b&ymC=wHk`M;Cbe$&P3A!tf3JE|$i7krm8p2RMxiX}5Sh`UB85VFflf9+wh zpHiz$#|yAzW4x|=2Qk(DGC$Ci=Ay8j9xGM&`K0*j$Jat>a5^Wf#h%tKMqp%j0s%zo zTt*{XX&DhIFW`DpjkEy_f_q4yuGntSLIcw$o(JJLo>d(}kUUes^WvJxNCWx6oqG^E z6*JEo+|ObI*1GbPdapNUKE5`V9x!R7bzmt44Sa0L0Y-FSQYC+(%`fMXAk9#~&EJ&t zER8T3%wb-w{#>71koI_Sr?XQ}uDpu)GB3W787G}|$|dw0*6rzx=y%~JqP5O>n!|10T|SW=$@n=@JS2Ym*W@wITz$D)^>hGUa)EE}?bDrnNt)b46Fk_7U!- z%4z^`*$JE~^H@_*Lj&(xf>FzmL&BLh;P0nCXc4n&oM+<8IizFX z-Ly*XR9f}4jm6~7Hw@Rf&t`oPHVB^OyDYu+-W)hWuyi9&!~(VhuIuA|A&9TS7& zV*Z0>iTbYD-6SIzi*C3b3*jWXp^qvia=9N2h2HDOz$`Krj>HV|(10>BDkBOTP|)4P zX`P%BsO9%uB5nI2MV$&k)0()mLg-snD|}p64JhOc}2lN{xt!R=i zn|HU3>!sXu%VWzZ$yWm;lO2l6>#(WkL&BVBZ@>O(i=AL*F|Bj>BFfvIoUjBnw7rN{ zi;}Q3m+1$k78!Cg*)tdLdiglU@G834mH;KR7%t-jvgnn!%t9RZi9W^3 zj=aE&JnwAZ?{U=4wPN9VKD~uB;vhGgz@G<=&TuIV%xmq$x-_y}2AJq$Y<#UnnXSP- z(<@2&vw2)gpb(X4B*tfCwvNg^Vs=h}>>m~d2eCxd?z7u(TGG(1{+rIoMYFFP^k1uz zUn=+u&Pn_9FE>~M=?0{9ZnCOzZr49+N{snGIyC9M+{mP^c{tU19mY zq03-f$Ux^m4Mm;Q(p#(Ek8XC7(%3>TOMO8(*fxn<4K`Geb=N6HdfKc2ObRftmY@(y z)j2g*+Mg$krCrIYMMPHss*UsxY`LL7*w@a<;wa^;_qCel@nB_qk=B&hzuQ7LRfe}0 z_2Y*#T%(DPlk>y~J%4**{4)*=^~P`c!Kx)G^n1mOUs$#SQ5WG)$AN7agikd_LzoM4 zFY_+<@WlIY#5dhS?;sR>&D|e2n%p7}(q<7#9($Q5yFUGvz>Th=ron@D07G5A%3jfNSLB{yfADDK^h|vD(Ftt_#m6y=wasQ3V=NlrtbBfugIu#nkT1JSt zisn;5{Fo0sW92q8jx62HJ2UtcdRW8+?nqYMJQE4-1~R;EW(i)|Tr$ByUE4-}e0xm4 zjlc&=4=coevWft!rB%3BqOhmgHU7H84=!`X>(j_WU%y#cP#coc8VX?-ehX0WE%O?@ z%T}}^|LD + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/machine-learning-services/images/installPackages.svg b/extensions/machine-learning/images/installPackages.svg similarity index 100% rename from extensions/machine-learning-services/images/installPackages.svg rename to extensions/machine-learning/images/installPackages.svg diff --git a/extensions/machine-learning-services/images/light/delete.svg b/extensions/machine-learning/images/light/delete.svg similarity index 100% rename from extensions/machine-learning-services/images/light/delete.svg rename to extensions/machine-learning/images/light/delete.svg diff --git a/extensions/machine-learning-services/images/light/edit.svg b/extensions/machine-learning/images/light/edit.svg similarity index 100% rename from extensions/machine-learning-services/images/light/edit.svg rename to extensions/machine-learning/images/light/edit.svg diff --git a/extensions/machine-learning/images/light/showLess.svg b/extensions/machine-learning/images/light/showLess.svg new file mode 100644 index 0000000000..03dfb7b72e --- /dev/null +++ b/extensions/machine-learning/images/light/showLess.svg @@ -0,0 +1,3 @@ + + + diff --git a/extensions/machine-learning/images/light/showMore.svg b/extensions/machine-learning/images/light/showMore.svg new file mode 100644 index 0000000000..c5db43a286 --- /dev/null +++ b/extensions/machine-learning/images/light/showMore.svg @@ -0,0 +1,3 @@ + + + diff --git a/extensions/machine-learning-services/images/linkIcon.svg b/extensions/machine-learning/images/linkIcon.svg similarity index 100% rename from extensions/machine-learning-services/images/linkIcon.svg rename to extensions/machine-learning/images/linkIcon.svg diff --git a/extensions/machine-learning/images/makePredictions.svg b/extensions/machine-learning/images/makePredictions.svg new file mode 100644 index 0000000000..40c3d4ab74 --- /dev/null +++ b/extensions/machine-learning/images/makePredictions.svg @@ -0,0 +1 @@ +m \ No newline at end of file diff --git a/extensions/machine-learning/images/manageModels.svg b/extensions/machine-learning/images/manageModels.svg new file mode 100644 index 0000000000..bed7f9f5f7 --- /dev/null +++ b/extensions/machine-learning/images/manageModels.svg @@ -0,0 +1 @@ +j_ \ No newline at end of file diff --git a/extensions/machine-learning-services/images/registerRuntime.svg b/extensions/machine-learning/images/registerRuntime.svg similarity index 100% rename from extensions/machine-learning-services/images/registerRuntime.svg rename to extensions/machine-learning/images/registerRuntime.svg diff --git a/extensions/machine-learning-services/images/video1.svg b/extensions/machine-learning/images/video1.svg similarity index 100% rename from extensions/machine-learning-services/images/video1.svg rename to extensions/machine-learning/images/video1.svg diff --git a/extensions/machine-learning-services/images/video2.svg b/extensions/machine-learning/images/video2.svg similarity index 100% rename from extensions/machine-learning-services/images/video2.svg rename to extensions/machine-learning/images/video2.svg diff --git a/extensions/machine-learning-services/package.json b/extensions/machine-learning/package.json similarity index 89% rename from extensions/machine-learning-services/package.json rename to extensions/machine-learning/package.json index 672e779c19..ae272ca2ab 100644 --- a/extensions/machine-learning-services/package.json +++ b/extensions/machine-learning/package.json @@ -1,5 +1,5 @@ { - "name": "machine-learning-services", + "name": "machine-learning", "displayName": "%displayName%", "description": "%description%", "version": "1.0.0", @@ -81,14 +81,6 @@ "dark": "./images/registerModel.svg" } }, - { - "command": "mls.command.manageLanguages", - "title": "%mls.command.manageLanguages%", - "icon": { - "light": "./images/registerRuntime.svg", - "dark": "./images/registerRuntime.svg" - } - }, { "command": "mls.command.dependencies", "title": "%mls.command.dependencies%" @@ -100,7 +92,11 @@ "description": "%description%", "provider": "MSSQL", "title": "%displayName%", - "when": "connectionProvider == 'MSSQL' && !mssql:iscloud && dashboardContext == 'server'", + "icon": { + "light": "./images/extensionIcon.svg", + "dark": "./images/extensionIcon.svg" + }, + "when": "connectionProvider == 'MSSQL' && !mssql:iscloud", "container": { "grid-container": [ { @@ -109,8 +105,7 @@ "col": 0, "widget": { "tasks-widget": [ - "mls.command.managePackages", - "mls.command.manageLanguages" + "mls.command.managePackages" ] } }, @@ -118,8 +113,8 @@ "name": "", "row": 0, "col": 1, - "rowspan": 3, - "colspan": 4, + "rowspan": 4, + "colspan": 3, "widget": { "modelview": { "id":"mls.dashboard" diff --git a/extensions/machine-learning-services/package.nls.json b/extensions/machine-learning/package.nls.json similarity index 68% rename from extensions/machine-learning-services/package.nls.json rename to extensions/machine-learning/package.nls.json index 5ad08fabf3..29b7e46b11 100644 --- a/extensions/machine-learning-services/package.nls.json +++ b/extensions/machine-learning/package.nls.json @@ -1,6 +1,6 @@ { - "displayName": "SQL Machine Learning", - "description": "SQL Machine Learning", + "displayName": "Machine Learning", + "description": "Machine Learning", "title.tasks": "Tasks", "title.documents": "Documents", "title.configurations": "Configurations", @@ -10,10 +10,10 @@ "mls.command.predictModel": "Make prediction", "mls.command.manageModels": "Manage models", "mls.command.importModel": "Import model", - "mls.configuration.title": "SQL Machine Learning Configurations", - "mls.pythonPath.description": "Local path to a preexisting Python installation used by SQL Machine Learning.", + "mls.configuration.title": "Machine Learning Configurations", + "mls.pythonPath.description": "Local path to a preexisting Python installation used by Machine Learning.", "mls.enablePython.description": "Enable Python package management.", "mls.enableR.description": "Enable R package management.", - "mls.rPath.description": "Local path to a preexisting R installation used by SQL Machine Learning.", - "mls.command.dependencies": "Install SQL Machine Learning Dependencies" + "mls.rPath.description": "Local path to a preexisting R installation used by Machine Learning.", + "mls.command.dependencies": "Install Machine Learning Dependencies" } diff --git a/extensions/machine-learning-services/src/common/apiWrapper.ts b/extensions/machine-learning/src/common/apiWrapper.ts similarity index 100% rename from extensions/machine-learning-services/src/common/apiWrapper.ts rename to extensions/machine-learning/src/common/apiWrapper.ts diff --git a/extensions/machine-learning-services/src/common/constants.ts b/extensions/machine-learning/src/common/constants.ts similarity index 92% rename from extensions/machine-learning-services/src/common/constants.ts rename to extensions/machine-learning/src/common/constants.ts index 3d777fd8d8..637db20d4f 100644 --- a/extensions/machine-learning-services/src/common/constants.ts +++ b/extensions/machine-learning/src/common/constants.ts @@ -16,7 +16,7 @@ export const rLPackagedFolderName = 'r_packages'; export const mlEnableMlsCommand = 'mls.command.enableMls'; export const mlDisableMlsCommand = 'mls.command.disableMls'; -export const extensionOutputChannel = 'SQL Machine Learning'; +export const extensionOutputChannel = 'Machine Learning'; export const notebookExtensionName = 'Microsoft.notebook'; export const azureSubscriptionsCommand = 'azure.accounts.getSubscriptions'; export const azureResourceGroupsCommand = 'azure.accounts.getResourceGroups'; @@ -189,13 +189,19 @@ export function invalidImportTableSchemaError(databaseName: string | undefined, export const loadModelParameterFailedError = localize('models.loadModelParameterFailedError', "Failed to load model parameters'"); export const unsupportedModelParameterType = localize('models.unsupportedModelParameterType', "unsupported"); -export const dashboardTitle = localize('dashboardTitle', "SQL ML"); -export const dashboardDesc = localize('dashboardDesc', "Machine learning for SQL databases"); +export const dashboardTitle = localize('dashboardTitle', "Machine Learning"); +export const dashboardDesc = localize('dashboardDesc', "Machine Learning for SQL Databases"); export const dashboardLinksTitle = localize('dashboardLinksTitle', "Useful links"); export const dashboardVideoLinksTitle = localize('dashboardVideoLinksTitle', "Video tutorials"); +export const showMoreTitle = localize('showMoreTitle', "Show more"); +export const showLessTitle = localize('showLessTitle', "Show less"); export const learnMoreTitle = localize('learnMoreTitle', "Learn more"); -export const mlsInstallMlsDocTitle = localize('mlsInstallMlsDocTitle', "Install SQL Server Machine Learning Services"); -export const mlsInstallMlsDocDesc = localize('mlsInstallMlsDocDesc', "This document guides you in the installation of SQL Server Machine Learning Services. Python and R scripts can be executed in-database using Machine Learning Services."); +export const sqlMlDocTitle = localize('sqlMlDocTitle', "SQL machine learning documentation"); +export const sqlMlDocDesc = localize('sqlMlDocDesc', "Learn how to use machine learning in SQL Server and SQL on Azure, to run Python and R scripts on relational data."); +export const sqlMlsDocTitle = localize('sqlMlsDocTitle', "SQL Server Machine Learning Services (Python and R)"); +export const sqlMlsDocDesc = localize('sqlMlsDocDesc', "Get started with Machine Learning Services on SQL Server and how to install it on Windows and Linux."); +export const sqlMlsAzureDocTitle = localize('sqlMlsAzureDocTitle', "Machine Learning Services in Azure SQL Managed Instance (preview)"); +export const sqlMlsAzureDocDesc = localize('sqlMlsAzureDocDesc', "Get started with Machine Learning Services in Azure SQL Managed Instances."); export const mlsInstallOdbcDocTitle = localize('mlsInstallObdcDocTitle', "Install the Microsoft ODBC driver for SQL Server"); export const mlsInstallOdbcDocDesc = localize('mlsInstallOdbcDocDesc', "This document explains how to install the Microsoft ODBC Driver for SQL Server."); @@ -204,7 +210,9 @@ export const mlsInstallOdbcDocDesc = localize('mlsInstallOdbcDocDesc', "This doc export const mlsDocuments = 'https://docs.microsoft.com/sql/advanced-analytics/?view=sql-server-ver15'; export const odbcDriverWindowsDocuments = 'https://docs.microsoft.com/sql/connect/odbc/windows/microsoft-odbc-driver-for-sql-server-on-windows?view=sql-server-ver15'; export const odbcDriverLinuxDocuments = 'https://docs.microsoft.com/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15'; -export const installMlsLinuxDocs = 'https://docs.microsoft.com/sql/linux/sql-server-linux-setup-machine-learning?toc=%2fsql%2fadvanced-analytics%2ftoc.json&view=sql-server-ver15'; +export const mlDocLink = 'https://docs.microsoft.com/sql/machine-learning/'; +export const mlsDocLink = 'https://docs.microsoft.com/sql/machine-learning/what-is-sql-server-machine-learning'; +export const mlsAzureDocLink = 'https://docs.microsoft.com/azure/sql-database/sql-database-managed-instance-machine-learning-services-overview'; export const installMlsWindowsDocs = 'https://docs.microsoft.com/sql/advanced-analytics/install/sql-machine-learning-services-windows-install?view=sql-server-ver15'; // CSS Styles diff --git a/extensions/machine-learning-services/src/common/eventEmitter.ts b/extensions/machine-learning/src/common/eventEmitter.ts similarity index 100% rename from extensions/machine-learning-services/src/common/eventEmitter.ts rename to extensions/machine-learning/src/common/eventEmitter.ts diff --git a/extensions/machine-learning-services/src/common/httpClient.ts b/extensions/machine-learning/src/common/httpClient.ts similarity index 100% rename from extensions/machine-learning-services/src/common/httpClient.ts rename to extensions/machine-learning/src/common/httpClient.ts diff --git a/extensions/machine-learning-services/src/common/processService.ts b/extensions/machine-learning/src/common/processService.ts similarity index 100% rename from extensions/machine-learning-services/src/common/processService.ts rename to extensions/machine-learning/src/common/processService.ts diff --git a/extensions/machine-learning-services/src/common/queryRunner.ts b/extensions/machine-learning/src/common/queryRunner.ts similarity index 100% rename from extensions/machine-learning-services/src/common/queryRunner.ts rename to extensions/machine-learning/src/common/queryRunner.ts diff --git a/extensions/machine-learning-services/src/common/utils.ts b/extensions/machine-learning/src/common/utils.ts similarity index 100% rename from extensions/machine-learning-services/src/common/utils.ts rename to extensions/machine-learning/src/common/utils.ts diff --git a/extensions/machine-learning-services/src/configurations/config.ts b/extensions/machine-learning/src/configurations/config.ts similarity index 100% rename from extensions/machine-learning-services/src/configurations/config.ts rename to extensions/machine-learning/src/configurations/config.ts diff --git a/extensions/machine-learning-services/src/configurations/packageConfigModel.ts b/extensions/machine-learning/src/configurations/packageConfigModel.ts similarity index 100% rename from extensions/machine-learning-services/src/configurations/packageConfigModel.ts rename to extensions/machine-learning/src/configurations/packageConfigModel.ts diff --git a/extensions/machine-learning-services/src/controllers/mainController.ts b/extensions/machine-learning/src/controllers/mainController.ts similarity index 84% rename from extensions/machine-learning-services/src/controllers/mainController.ts rename to extensions/machine-learning/src/controllers/mainController.ts index e32ec99e2f..50ccb82f4a 100644 --- a/extensions/machine-learning-services/src/controllers/mainController.ts +++ b/extensions/machine-learning/src/controllers/mainController.ts @@ -6,7 +6,6 @@ import * as vscode from 'vscode'; import * as nbExtensionApis from '../typings/notebookServices'; -import * as mssql from '../../../mssql'; import { PackageManager } from '../packageManagement/packageManager'; import * as constants from '../common/constants'; import { ApiWrapper } from '../common/apiWrapper'; @@ -15,8 +14,6 @@ import { ProcessService } from '../common/processService'; import { Config } from '../configurations/config'; import { PackageManagementService } from '../packageManagement/packageManagementService'; import { HttpClient } from '../common/httpClient'; -import { LanguageController } from '../views/externalLanguages/languageController'; -import { LanguageService } from '../externalLanguage/languageService'; import { ModelManagementController } from '../views/models/modelManagementController'; import { DeployedModelService } from '../modelManagement/deployedModelService'; import { AzureModelRegistryService } from '../modelManagement/azureModelRegistryService'; @@ -74,18 +71,6 @@ export default class MainController implements vscode.Disposable { } } - /** - * Returns an instance of Server Installation from notebook extension - */ - private async getLanguageExtensionService(): Promise { - let mssqlExtension = this._apiWrapper.getExtension(mssql.extension.name)?.exports as mssql.IExtension; - if (mssqlExtension) { - return (mssqlExtension.languageExtension); - } else { - throw new Error(constants.mssqlExtensionNotLoaded); - } - } - private async initialize(): Promise { this._outputChannel.show(true); @@ -99,9 +84,6 @@ export default class MainController implements vscode.Disposable { // External Languages // - let mssqlService = await this.getLanguageExtensionService(); - let languagesModel = new LanguageService(this._apiWrapper, mssqlService); - let languageController = new LanguageController(this._apiWrapper, this._rootPath, languagesModel); let modelImporter = new ModelPythonClient(this._outputChannel, this._apiWrapper, this._processService, this._config, packageManager); let modelRecentService = new ModelConfigRecent(this._context.globalState); @@ -116,9 +98,6 @@ export default class MainController implements vscode.Disposable { let dashboardWidget = new DashboardWidget(this._apiWrapper, this._rootPath); dashboardWidget.register(); - this._apiWrapper.registerCommand(constants.mlManageLanguagesCommand, (async () => { - await languageController.manageLanguages(); - })); this._apiWrapper.registerCommand(constants.mlManageModelsCommand, (async () => { await modelManagementController.manageRegisteredModels(); })); @@ -134,9 +113,6 @@ export default class MainController implements vscode.Disposable { this._apiWrapper.registerTaskHandler(constants.mlManagePackagesCommand, async () => { await packageManager.managePackages(); }); - this._apiWrapper.registerTaskHandler(constants.mlManageLanguagesCommand, async () => { - await languageController.manageLanguages(); - }); } /** diff --git a/extensions/machine-learning-services/src/externalLanguage/languageService.ts b/extensions/machine-learning/src/externalLanguage/languageService.ts similarity index 100% rename from extensions/machine-learning-services/src/externalLanguage/languageService.ts rename to extensions/machine-learning/src/externalLanguage/languageService.ts diff --git a/extensions/machine-learning-services/src/main.ts b/extensions/machine-learning/src/main.ts similarity index 100% rename from extensions/machine-learning-services/src/main.ts rename to extensions/machine-learning/src/main.ts diff --git a/extensions/machine-learning-services/src/modelManagement/artifacts.ts b/extensions/machine-learning/src/modelManagement/artifacts.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/artifacts.ts rename to extensions/machine-learning/src/modelManagement/artifacts.ts diff --git a/extensions/machine-learning-services/src/modelManagement/assets.ts b/extensions/machine-learning/src/modelManagement/assets.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/assets.ts rename to extensions/machine-learning/src/modelManagement/assets.ts diff --git a/extensions/machine-learning-services/src/modelManagement/azureModelRegistryService.ts b/extensions/machine-learning/src/modelManagement/azureModelRegistryService.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/azureModelRegistryService.ts rename to extensions/machine-learning/src/modelManagement/azureModelRegistryService.ts diff --git a/extensions/machine-learning-services/src/modelManagement/deployedModelService.ts b/extensions/machine-learning/src/modelManagement/deployedModelService.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/deployedModelService.ts rename to extensions/machine-learning/src/modelManagement/deployedModelService.ts diff --git a/extensions/machine-learning-services/src/modelManagement/interfaces.ts b/extensions/machine-learning/src/modelManagement/interfaces.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/interfaces.ts rename to extensions/machine-learning/src/modelManagement/interfaces.ts diff --git a/extensions/machine-learning-services/src/modelManagement/mappers.ts b/extensions/machine-learning/src/modelManagement/mappers.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/mappers.ts rename to extensions/machine-learning/src/modelManagement/mappers.ts diff --git a/extensions/machine-learning-services/src/modelManagement/modelConfigRecent.ts b/extensions/machine-learning/src/modelManagement/modelConfigRecent.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/modelConfigRecent.ts rename to extensions/machine-learning/src/modelManagement/modelConfigRecent.ts diff --git a/extensions/machine-learning-services/src/modelManagement/modelPythonClient.ts b/extensions/machine-learning/src/modelManagement/modelPythonClient.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/modelPythonClient.ts rename to extensions/machine-learning/src/modelManagement/modelPythonClient.ts diff --git a/extensions/machine-learning-services/src/modelManagement/parameters.ts b/extensions/machine-learning/src/modelManagement/parameters.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/parameters.ts rename to extensions/machine-learning/src/modelManagement/parameters.ts diff --git a/extensions/machine-learning-services/src/modelManagement/queries.ts b/extensions/machine-learning/src/modelManagement/queries.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/queries.ts rename to extensions/machine-learning/src/modelManagement/queries.ts diff --git a/extensions/machine-learning-services/src/modelManagement/workspacesModels.ts b/extensions/machine-learning/src/modelManagement/workspacesModels.ts similarity index 100% rename from extensions/machine-learning-services/src/modelManagement/workspacesModels.ts rename to extensions/machine-learning/src/modelManagement/workspacesModels.ts diff --git a/extensions/machine-learning-services/src/packageManagement/packageManageProviderBase.ts b/extensions/machine-learning/src/packageManagement/packageManageProviderBase.ts similarity index 100% rename from extensions/machine-learning-services/src/packageManagement/packageManageProviderBase.ts rename to extensions/machine-learning/src/packageManagement/packageManageProviderBase.ts diff --git a/extensions/machine-learning-services/src/packageManagement/packageManagementService.ts b/extensions/machine-learning/src/packageManagement/packageManagementService.ts similarity index 100% rename from extensions/machine-learning-services/src/packageManagement/packageManagementService.ts rename to extensions/machine-learning/src/packageManagement/packageManagementService.ts diff --git a/extensions/machine-learning-services/src/packageManagement/packageManager.ts b/extensions/machine-learning/src/packageManagement/packageManager.ts similarity index 100% rename from extensions/machine-learning-services/src/packageManagement/packageManager.ts rename to extensions/machine-learning/src/packageManagement/packageManager.ts diff --git a/extensions/machine-learning-services/src/packageManagement/sqlPythonPackageManageProvider.ts b/extensions/machine-learning/src/packageManagement/sqlPythonPackageManageProvider.ts similarity index 100% rename from extensions/machine-learning-services/src/packageManagement/sqlPythonPackageManageProvider.ts rename to extensions/machine-learning/src/packageManagement/sqlPythonPackageManageProvider.ts diff --git a/extensions/machine-learning-services/src/packageManagement/sqlRPackageManageProvider.ts b/extensions/machine-learning/src/packageManagement/sqlRPackageManageProvider.ts similarity index 100% rename from extensions/machine-learning-services/src/packageManagement/sqlRPackageManageProvider.ts rename to extensions/machine-learning/src/packageManagement/sqlRPackageManageProvider.ts diff --git a/extensions/machine-learning-services/src/prediction/interfaces.ts b/extensions/machine-learning/src/prediction/interfaces.ts similarity index 100% rename from extensions/machine-learning-services/src/prediction/interfaces.ts rename to extensions/machine-learning/src/prediction/interfaces.ts diff --git a/extensions/machine-learning-services/src/prediction/predictService.ts b/extensions/machine-learning/src/prediction/predictService.ts similarity index 100% rename from extensions/machine-learning-services/src/prediction/predictService.ts rename to extensions/machine-learning/src/prediction/predictService.ts diff --git a/extensions/machine-learning-services/src/test/common/processService.test.ts b/extensions/machine-learning/src/test/common/processService.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/common/processService.test.ts rename to extensions/machine-learning/src/test/common/processService.test.ts diff --git a/extensions/machine-learning-services/src/test/index.ts b/extensions/machine-learning/src/test/index.ts similarity index 100% rename from extensions/machine-learning-services/src/test/index.ts rename to extensions/machine-learning/src/test/index.ts diff --git a/extensions/machine-learning-services/src/test/mainController.test.ts b/extensions/machine-learning/src/test/mainController.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/mainController.test.ts rename to extensions/machine-learning/src/test/mainController.test.ts diff --git a/extensions/machine-learning-services/src/test/modelManagement/azureModelRegistryService.test.ts b/extensions/machine-learning/src/test/modelManagement/azureModelRegistryService.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/modelManagement/azureModelRegistryService.test.ts rename to extensions/machine-learning/src/test/modelManagement/azureModelRegistryService.test.ts diff --git a/extensions/machine-learning-services/src/test/modelManagement/deployedModelService.test.ts b/extensions/machine-learning/src/test/modelManagement/deployedModelService.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/modelManagement/deployedModelService.test.ts rename to extensions/machine-learning/src/test/modelManagement/deployedModelService.test.ts diff --git a/extensions/machine-learning-services/src/test/modelManagement/modelPythonClient.test.ts b/extensions/machine-learning/src/test/modelManagement/modelPythonClient.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/modelManagement/modelPythonClient.test.ts rename to extensions/machine-learning/src/test/modelManagement/modelPythonClient.test.ts diff --git a/extensions/machine-learning-services/src/test/packageManagement/packageManagementService.test.ts b/extensions/machine-learning/src/test/packageManagement/packageManagementService.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/packageManagement/packageManagementService.test.ts rename to extensions/machine-learning/src/test/packageManagement/packageManagementService.test.ts diff --git a/extensions/machine-learning-services/src/test/packageManagement/packageManager.test.ts b/extensions/machine-learning/src/test/packageManagement/packageManager.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/packageManagement/packageManager.test.ts rename to extensions/machine-learning/src/test/packageManagement/packageManager.test.ts diff --git a/extensions/machine-learning-services/src/test/packageManagement/sqlPythonPackageManageProvider.test.ts b/extensions/machine-learning/src/test/packageManagement/sqlPythonPackageManageProvider.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/packageManagement/sqlPythonPackageManageProvider.test.ts rename to extensions/machine-learning/src/test/packageManagement/sqlPythonPackageManageProvider.test.ts diff --git a/extensions/machine-learning-services/src/test/packageManagement/sqlRPackageManageProvider.test.ts b/extensions/machine-learning/src/test/packageManagement/sqlRPackageManageProvider.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/packageManagement/sqlRPackageManageProvider.test.ts rename to extensions/machine-learning/src/test/packageManagement/sqlRPackageManageProvider.test.ts diff --git a/extensions/machine-learning-services/src/test/packageManagement/utils.ts b/extensions/machine-learning/src/test/packageManagement/utils.ts similarity index 100% rename from extensions/machine-learning-services/src/test/packageManagement/utils.ts rename to extensions/machine-learning/src/test/packageManagement/utils.ts diff --git a/extensions/machine-learning-services/src/test/prediction/predictService.test.ts b/extensions/machine-learning/src/test/prediction/predictService.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/prediction/predictService.test.ts rename to extensions/machine-learning/src/test/prediction/predictService.test.ts diff --git a/extensions/machine-learning-services/src/test/queryRunner.test.ts b/extensions/machine-learning/src/test/queryRunner.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/queryRunner.test.ts rename to extensions/machine-learning/src/test/queryRunner.test.ts diff --git a/extensions/machine-learning-services/src/test/utils.ts b/extensions/machine-learning/src/test/utils.ts similarity index 100% rename from extensions/machine-learning-services/src/test/utils.ts rename to extensions/machine-learning/src/test/utils.ts diff --git a/extensions/machine-learning-services/src/test/views/dashboardWidget.test.ts b/extensions/machine-learning/src/test/views/dashboardWidget.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/dashboardWidget.test.ts rename to extensions/machine-learning/src/test/views/dashboardWidget.test.ts diff --git a/extensions/machine-learning-services/src/test/views/externalLanguages/addEditLanguageTab.test.ts b/extensions/machine-learning/src/test/views/externalLanguages/addEditLanguageTab.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/externalLanguages/addEditLanguageTab.test.ts rename to extensions/machine-learning/src/test/views/externalLanguages/addEditLanguageTab.test.ts diff --git a/extensions/machine-learning-services/src/test/views/externalLanguages/languageController.test.ts b/extensions/machine-learning/src/test/views/externalLanguages/languageController.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/externalLanguages/languageController.test.ts rename to extensions/machine-learning/src/test/views/externalLanguages/languageController.test.ts diff --git a/extensions/machine-learning-services/src/test/views/externalLanguages/languageEditDialog.test.ts b/extensions/machine-learning/src/test/views/externalLanguages/languageEditDialog.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/externalLanguages/languageEditDialog.test.ts rename to extensions/machine-learning/src/test/views/externalLanguages/languageEditDialog.test.ts diff --git a/extensions/machine-learning-services/src/test/views/externalLanguages/languagesDialog.test.ts b/extensions/machine-learning/src/test/views/externalLanguages/languagesDialog.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/externalLanguages/languagesDialog.test.ts rename to extensions/machine-learning/src/test/views/externalLanguages/languagesDialog.test.ts diff --git a/extensions/machine-learning-services/src/test/views/externalLanguages/languagesDialogModel.test.ts b/extensions/machine-learning/src/test/views/externalLanguages/languagesDialogModel.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/externalLanguages/languagesDialogModel.test.ts rename to extensions/machine-learning/src/test/views/externalLanguages/languagesDialogModel.test.ts diff --git a/extensions/machine-learning-services/src/test/views/externalLanguages/utils.ts b/extensions/machine-learning/src/test/views/externalLanguages/utils.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/externalLanguages/utils.ts rename to extensions/machine-learning/src/test/views/externalLanguages/utils.ts diff --git a/extensions/machine-learning-services/src/test/views/models/ModelManagementController.test.ts b/extensions/machine-learning/src/test/views/models/ModelManagementController.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/models/ModelManagementController.test.ts rename to extensions/machine-learning/src/test/views/models/ModelManagementController.test.ts diff --git a/extensions/machine-learning-services/src/test/views/models/azureModelsComponent.test.ts b/extensions/machine-learning/src/test/views/models/azureModelsComponent.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/models/azureModelsComponent.test.ts rename to extensions/machine-learning/src/test/views/models/azureModelsComponent.test.ts diff --git a/extensions/machine-learning-services/src/test/views/models/editModelDialog.test.ts b/extensions/machine-learning/src/test/views/models/editModelDialog.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/models/editModelDialog.test.ts rename to extensions/machine-learning/src/test/views/models/editModelDialog.test.ts diff --git a/extensions/machine-learning-services/src/test/views/models/predictWizard.test.ts b/extensions/machine-learning/src/test/views/models/predictWizard.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/models/predictWizard.test.ts rename to extensions/machine-learning/src/test/views/models/predictWizard.test.ts diff --git a/extensions/machine-learning-services/src/test/views/models/registerModelWizard.test.ts b/extensions/machine-learning/src/test/views/models/registerModelWizard.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/models/registerModelWizard.test.ts rename to extensions/machine-learning/src/test/views/models/registerModelWizard.test.ts diff --git a/extensions/machine-learning-services/src/test/views/models/registeredModelsDialog.test.ts b/extensions/machine-learning/src/test/views/models/registeredModelsDialog.test.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/models/registeredModelsDialog.test.ts rename to extensions/machine-learning/src/test/views/models/registeredModelsDialog.test.ts diff --git a/extensions/machine-learning-services/src/test/views/models/utils.ts b/extensions/machine-learning/src/test/views/models/utils.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/models/utils.ts rename to extensions/machine-learning/src/test/views/models/utils.ts diff --git a/extensions/machine-learning-services/src/test/views/utils.ts b/extensions/machine-learning/src/test/views/utils.ts similarity index 100% rename from extensions/machine-learning-services/src/test/views/utils.ts rename to extensions/machine-learning/src/test/views/utils.ts diff --git a/extensions/machine-learning-services/src/types.ts b/extensions/machine-learning/src/types.ts similarity index 100% rename from extensions/machine-learning-services/src/types.ts rename to extensions/machine-learning/src/types.ts diff --git a/extensions/machine-learning-services/src/typings/azure-resource.d.ts b/extensions/machine-learning/src/typings/azure-resource.d.ts similarity index 100% rename from extensions/machine-learning-services/src/typings/azure-resource.d.ts rename to extensions/machine-learning/src/typings/azure-resource.d.ts diff --git a/extensions/machine-learning-services/src/typings/notebookServices.d.ts b/extensions/machine-learning/src/typings/notebookServices.d.ts similarity index 100% rename from extensions/machine-learning-services/src/typings/notebookServices.d.ts rename to extensions/machine-learning/src/typings/notebookServices.d.ts diff --git a/extensions/machine-learning-services/src/typings/ref.d.ts b/extensions/machine-learning/src/typings/ref.d.ts similarity index 100% rename from extensions/machine-learning-services/src/typings/ref.d.ts rename to extensions/machine-learning/src/typings/ref.d.ts diff --git a/extensions/machine-learning-services/src/views/controllerBase.ts b/extensions/machine-learning/src/views/controllerBase.ts similarity index 100% rename from extensions/machine-learning-services/src/views/controllerBase.ts rename to extensions/machine-learning/src/views/controllerBase.ts diff --git a/extensions/machine-learning-services/src/views/dialogView.ts b/extensions/machine-learning/src/views/dialogView.ts similarity index 100% rename from extensions/machine-learning-services/src/views/dialogView.ts rename to extensions/machine-learning/src/views/dialogView.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/addEditLanguageTab.ts b/extensions/machine-learning/src/views/externalLanguages/addEditLanguageTab.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/addEditLanguageTab.ts rename to extensions/machine-learning/src/views/externalLanguages/addEditLanguageTab.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/currentLanguagesTab.ts b/extensions/machine-learning/src/views/externalLanguages/currentLanguagesTab.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/currentLanguagesTab.ts rename to extensions/machine-learning/src/views/externalLanguages/currentLanguagesTab.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/fileBrowserDialog.ts b/extensions/machine-learning/src/views/externalLanguages/fileBrowserDialog.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/fileBrowserDialog.ts rename to extensions/machine-learning/src/views/externalLanguages/fileBrowserDialog.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/languageContentView.ts b/extensions/machine-learning/src/views/externalLanguages/languageContentView.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/languageContentView.ts rename to extensions/machine-learning/src/views/externalLanguages/languageContentView.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/languageController.ts b/extensions/machine-learning/src/views/externalLanguages/languageController.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/languageController.ts rename to extensions/machine-learning/src/views/externalLanguages/languageController.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/languageEditDialog.ts b/extensions/machine-learning/src/views/externalLanguages/languageEditDialog.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/languageEditDialog.ts rename to extensions/machine-learning/src/views/externalLanguages/languageEditDialog.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/languageViewBase.ts b/extensions/machine-learning/src/views/externalLanguages/languageViewBase.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/languageViewBase.ts rename to extensions/machine-learning/src/views/externalLanguages/languageViewBase.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/languagesDialog.ts b/extensions/machine-learning/src/views/externalLanguages/languagesDialog.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/languagesDialog.ts rename to extensions/machine-learning/src/views/externalLanguages/languagesDialog.ts diff --git a/extensions/machine-learning-services/src/views/externalLanguages/languagesTable.ts b/extensions/machine-learning/src/views/externalLanguages/languagesTable.ts similarity index 100% rename from extensions/machine-learning-services/src/views/externalLanguages/languagesTable.ts rename to extensions/machine-learning/src/views/externalLanguages/languagesTable.ts diff --git a/extensions/machine-learning-services/src/views/interfaces.ts b/extensions/machine-learning/src/views/interfaces.ts similarity index 100% rename from extensions/machine-learning-services/src/views/interfaces.ts rename to extensions/machine-learning/src/views/interfaces.ts diff --git a/extensions/machine-learning-services/src/views/mainViewBase.ts b/extensions/machine-learning/src/views/mainViewBase.ts similarity index 100% rename from extensions/machine-learning-services/src/views/mainViewBase.ts rename to extensions/machine-learning/src/views/mainViewBase.ts diff --git a/extensions/machine-learning-services/src/views/models/azureModelsComponent.ts b/extensions/machine-learning/src/views/models/azureModelsComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/azureModelsComponent.ts rename to extensions/machine-learning/src/views/models/azureModelsComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/azureModelsTable.ts b/extensions/machine-learning/src/views/models/azureModelsTable.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/azureModelsTable.ts rename to extensions/machine-learning/src/views/models/azureModelsTable.ts diff --git a/extensions/machine-learning-services/src/views/models/azureResourceFilterComponent.ts b/extensions/machine-learning/src/views/models/azureResourceFilterComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/azureResourceFilterComponent.ts rename to extensions/machine-learning/src/views/models/azureResourceFilterComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/azureSignInComponent.ts b/extensions/machine-learning/src/views/models/azureSignInComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/azureSignInComponent.ts rename to extensions/machine-learning/src/views/models/azureSignInComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/localModelsComponent.ts b/extensions/machine-learning/src/views/models/localModelsComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/localModelsComponent.ts rename to extensions/machine-learning/src/views/models/localModelsComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/manageModels/currentModelsComponent.ts b/extensions/machine-learning/src/views/models/manageModels/currentModelsComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/manageModels/currentModelsComponent.ts rename to extensions/machine-learning/src/views/models/manageModels/currentModelsComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/manageModels/currentModelsTable.ts b/extensions/machine-learning/src/views/models/manageModels/currentModelsTable.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/manageModels/currentModelsTable.ts rename to extensions/machine-learning/src/views/models/manageModels/currentModelsTable.ts diff --git a/extensions/machine-learning-services/src/views/models/manageModels/editModelDialog.ts b/extensions/machine-learning/src/views/models/manageModels/editModelDialog.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/manageModels/editModelDialog.ts rename to extensions/machine-learning/src/views/models/manageModels/editModelDialog.ts diff --git a/extensions/machine-learning-services/src/views/models/manageModels/importModelWizard.ts b/extensions/machine-learning/src/views/models/manageModels/importModelWizard.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/manageModels/importModelWizard.ts rename to extensions/machine-learning/src/views/models/manageModels/importModelWizard.ts diff --git a/extensions/machine-learning-services/src/views/models/manageModels/manageModelsDialog.ts b/extensions/machine-learning/src/views/models/manageModels/manageModelsDialog.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/manageModels/manageModelsDialog.ts rename to extensions/machine-learning/src/views/models/manageModels/manageModelsDialog.ts diff --git a/extensions/machine-learning-services/src/views/models/manageModels/modelDetailsComponent.ts b/extensions/machine-learning/src/views/models/manageModels/modelDetailsComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/manageModels/modelDetailsComponent.ts rename to extensions/machine-learning/src/views/models/manageModels/modelDetailsComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/manageModels/modelDetailsEditPage.ts b/extensions/machine-learning/src/views/models/manageModels/modelDetailsEditPage.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/manageModels/modelDetailsEditPage.ts rename to extensions/machine-learning/src/views/models/manageModels/modelDetailsEditPage.ts diff --git a/extensions/machine-learning-services/src/views/models/manageModels/modelImportLocationPage.ts b/extensions/machine-learning/src/views/models/manageModels/modelImportLocationPage.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/manageModels/modelImportLocationPage.ts rename to extensions/machine-learning/src/views/models/manageModels/modelImportLocationPage.ts diff --git a/extensions/machine-learning-services/src/views/models/modelBrowsePage.ts b/extensions/machine-learning/src/views/models/modelBrowsePage.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/modelBrowsePage.ts rename to extensions/machine-learning/src/views/models/modelBrowsePage.ts diff --git a/extensions/machine-learning-services/src/views/models/modelDetailsPage.ts b/extensions/machine-learning/src/views/models/modelDetailsPage.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/modelDetailsPage.ts rename to extensions/machine-learning/src/views/models/modelDetailsPage.ts diff --git a/extensions/machine-learning-services/src/views/models/modelManagementController.ts b/extensions/machine-learning/src/views/models/modelManagementController.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/modelManagementController.ts rename to extensions/machine-learning/src/views/models/modelManagementController.ts diff --git a/extensions/machine-learning-services/src/views/models/modelSourcePage.ts b/extensions/machine-learning/src/views/models/modelSourcePage.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/modelSourcePage.ts rename to extensions/machine-learning/src/views/models/modelSourcePage.ts diff --git a/extensions/machine-learning-services/src/views/models/modelSourcesComponent.ts b/extensions/machine-learning/src/views/models/modelSourcesComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/modelSourcesComponent.ts rename to extensions/machine-learning/src/views/models/modelSourcesComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/modelViewBase.ts b/extensions/machine-learning/src/views/models/modelViewBase.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/modelViewBase.ts rename to extensions/machine-learning/src/views/models/modelViewBase.ts diff --git a/extensions/machine-learning-services/src/views/models/modelsDetailsTableComponent.ts b/extensions/machine-learning/src/views/models/modelsDetailsTableComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/modelsDetailsTableComponent.ts rename to extensions/machine-learning/src/views/models/modelsDetailsTableComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/prediction/columnsSelectionPage.ts b/extensions/machine-learning/src/views/models/prediction/columnsSelectionPage.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/prediction/columnsSelectionPage.ts rename to extensions/machine-learning/src/views/models/prediction/columnsSelectionPage.ts diff --git a/extensions/machine-learning-services/src/views/models/prediction/columnsTable.ts b/extensions/machine-learning/src/views/models/prediction/columnsTable.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/prediction/columnsTable.ts rename to extensions/machine-learning/src/views/models/prediction/columnsTable.ts diff --git a/extensions/machine-learning-services/src/views/models/prediction/inputColumnsComponent.ts b/extensions/machine-learning/src/views/models/prediction/inputColumnsComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/prediction/inputColumnsComponent.ts rename to extensions/machine-learning/src/views/models/prediction/inputColumnsComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/prediction/modelArtifact.ts b/extensions/machine-learning/src/views/models/prediction/modelArtifact.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/prediction/modelArtifact.ts rename to extensions/machine-learning/src/views/models/prediction/modelArtifact.ts diff --git a/extensions/machine-learning-services/src/views/models/prediction/outputColumnsComponent.ts b/extensions/machine-learning/src/views/models/prediction/outputColumnsComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/prediction/outputColumnsComponent.ts rename to extensions/machine-learning/src/views/models/prediction/outputColumnsComponent.ts diff --git a/extensions/machine-learning-services/src/views/models/prediction/predictWizard.ts b/extensions/machine-learning/src/views/models/prediction/predictWizard.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/prediction/predictWizard.ts rename to extensions/machine-learning/src/views/models/prediction/predictWizard.ts diff --git a/extensions/machine-learning-services/src/views/models/tableSelectionComponent.ts b/extensions/machine-learning/src/views/models/tableSelectionComponent.ts similarity index 100% rename from extensions/machine-learning-services/src/views/models/tableSelectionComponent.ts rename to extensions/machine-learning/src/views/models/tableSelectionComponent.ts diff --git a/extensions/machine-learning-services/src/views/viewBase.ts b/extensions/machine-learning/src/views/viewBase.ts similarity index 100% rename from extensions/machine-learning-services/src/views/viewBase.ts rename to extensions/machine-learning/src/views/viewBase.ts diff --git a/extensions/machine-learning-services/src/views/widgets/dashboardWidget.ts b/extensions/machine-learning/src/views/widgets/dashboardWidget.ts similarity index 71% rename from extensions/machine-learning-services/src/views/widgets/dashboardWidget.ts rename to extensions/machine-learning/src/views/widgets/dashboardWidget.ts index 1d25d6d186..57343c7903 100644 --- a/extensions/machine-learning-services/src/views/widgets/dashboardWidget.ts +++ b/extensions/machine-learning/src/views/widgets/dashboardWidget.ts @@ -19,7 +19,7 @@ interface IActionMetadata { } const maxWidth = 800; -const headerMaxHeight = 200; +const headerMaxHeight = 300; export class DashboardWidget { /** @@ -42,10 +42,11 @@ export class DashboardWidget { CSSStyles: { 'background-image': `url(${vscode.Uri.file(this.asAbsolutePath('images/background.svg'))})`, 'background-repeat': 'no-repeat', - 'background-position': 'top', + 'background-position': 'bottom', 'width': `${maxWidth}px`, - 'height': '130px', - 'background-size': `${maxWidth}px ${headerMaxHeight}px` + 'height': '330px', + 'background-size': `${maxWidth}px ${headerMaxHeight}px`, + 'margin-bottom': '-60px' } }); container.addItem(tasksContainer, { @@ -78,13 +79,12 @@ export class DashboardWidget { const header = view.modelBuilder.flexContainer().withLayout({ flexFlow: 'column', width: maxWidth, - height: headerMaxHeight, + height: headerMaxHeight }).component(); const titleComponent = view.modelBuilder.text().withProperties({ value: constants.dashboardTitle, CSSStyles: { 'font-size': '36px', - //'color': '#333333', 'font-weight': 'bold', 'margin': '0px' } @@ -93,7 +93,6 @@ export class DashboardWidget { value: constants.dashboardDesc, CSSStyles: { 'font-size': '14px', - //'color': '#888888', 'font-weight': 'bold', 'margin': '0px' } @@ -101,7 +100,7 @@ export class DashboardWidget { header.addItems([titleComponent, descComponent], { CSSStyles: { 'width': `${maxWidth}px`, - 'padding': '10px' + 'padding': '5px' } }); @@ -120,13 +119,30 @@ export class DashboardWidget { footerContainer.addItem(linksContainer); footerContainer.addItem(videoLinksContainer, { CSSStyles: { - 'padding-left': '50px', + 'padding-left': '45px', } }); return footerContainer; } + private createVideoLinkContainers(view: azdata.ModelView, links: IActionMetadata[]): azdata.Component { + const maxWidth = 400; + const videosContainer = view.modelBuilder.flexContainer().withLayout({ + flexFlow: 'row', + width: maxWidth, + height: '300px', + }).component(); + + links.forEach(link => { + const videoContainer = this.createVideoLink(view, link); + + videosContainer.addItem(videoContainer); + }); + + return videosContainer; + } + private createVideoLinks(view: azdata.ModelView): azdata.Component { const maxWidth = 400; const linksContainer = view.modelBuilder.flexContainer().withLayout({ @@ -143,22 +159,13 @@ export class DashboardWidget { 'margin': '0px' } }).component(); - const videosContainer = view.modelBuilder.flexContainer().withLayout({ - flexFlow: 'row', - width: maxWidth, - height: '500px', - }).component(); - const video1Container = this.createVideoLink(view, { - iconPath: { light: 'images/video1.svg', dark: 'images/video1.svg' }, - description: 'Visualize data using SandDance', - link: 'https://www.youtube.com/watch?v=e305wTAoLZs' - }); - videosContainer.addItem(video1Container); - const video2Container = this.createVideoLink(view, { - iconPath: { light: 'images/video2.svg', dark: 'images/video2.svg' }, - description: 'How to make the best out of Microsoft Azure' - }); - videosContainer.addItem(video2Container); + const viewPanelStyle = { + 'padding': '0px', + 'padding-right': '5px', + 'padding-top': '20px', + 'height': '200px', + 'margin': '0px' + }; linksContainer.addItems([titleComponent], { CSSStyles: { @@ -169,7 +176,96 @@ export class DashboardWidget { 'margin': '0px' } }); - linksContainer.addItems([videosContainer], { + const videosContainer = this.createVideoLinkContainers(view, [ + { + iconPath: { light: 'images/video1.svg', dark: 'images/video1.svg' }, + description: 'Artificial intelligence and machine learning with SQL Server 2019', + link: 'https://www.youtube.com/watch?v=sE99cSoFOHs' + }, + { + iconPath: { light: 'images/video2.svg', dark: 'images/video2.svg' }, + description: 'SQL Server Machine Learning Services', + link: 'https://www.youtube.com/watch?v=R4GCBoxADyQ' + } + ]); + + linksContainer.addItem(videosContainer, { + CSSStyles: viewPanelStyle + }); + + const moreVideosContainer = this.createVideoLinkContainers(view, [ + { + iconPath: { light: 'images/video2.svg', dark: 'images/video2.svg' }, + description: 'Introduction to Azure Data Studio Notebooks', + link: 'https://www.youtube.com/watch?v=Nt4kIHQ0IOc' + } + ]); + + this.addShowMorePanel(view, linksContainer, moreVideosContainer, { 'padding-left': '5px' }, viewPanelStyle); + return linksContainer; + } + + private addShowMorePanel(view: azdata.ModelView, parentPanel: azdata.FlexContainer, morePanel: azdata.Component, moreButtonStyle: { [key: string]: string }, morePanelStyle: { [key: string]: string }): azdata.Component { + const maxWidth = 100; + const linkContainer = view.modelBuilder.flexContainer().withLayout({ + flexFlow: 'row', + width: maxWidth + 10, + justifyContent: 'flex-start' + }).component(); + const showMoreComponent = view.modelBuilder.hyperlink().withProperties({ + label: constants.showMoreTitle + }).component(); + const image = view.modelBuilder.image().withProperties({ + width: '10px', + height: '10px', + iconPath: { + dark: this.asAbsolutePath('images/dark/showMore_inverse.svg'), + light: this.asAbsolutePath('images/light/showMore.svg'), + }, + iconHeight: '10px', + iconWidth: '10px' + }).component(); + showMoreComponent.onDidClick(() => { + let showMore = showMoreComponent.label === constants.showMoreTitle; + if (showMore) { + showMoreComponent.label = constants.showLessTitle; + image.iconPath = { + dark: this.asAbsolutePath('images/dark/showLess_inverse.svg'), + light: this.asAbsolutePath('images/light/showLess.svg'), + }; + parentPanel.addItem(morePanel, { + CSSStyles: morePanelStyle + }); + } else { + showMoreComponent.label = constants.showMoreTitle; + parentPanel.removeItem(morePanel); + image.iconPath = { + dark: this.asAbsolutePath('images/dark/showMore_inverse.svg'), + light: this.asAbsolutePath('images/light/showMore.svg'), + }; + } + showMore = !showMore; + }); + linkContainer.addItem(showMoreComponent, { + CSSStyles: Object.assign({}, moreButtonStyle, { + 'font-size': '12px', + 'margin': '0px', + 'color': '#006ab1', + 'padding-right': '5px' + } + ) + }); + linkContainer.addItem(image, { + CSSStyles: { + 'padding': '0px', + 'padding-right': '5px', + 'padding-top': '5px', + 'height': '10px', + 'margin': '0px' + } + }); + + parentPanel.addItem(linkContainer, { CSSStyles: { 'padding': '0px', 'padding-right': '5px', @@ -178,15 +274,16 @@ export class DashboardWidget { 'margin': '0px' } }); - return linksContainer; + + return showMoreComponent; } private createVideoLink(view: azdata.ModelView, linkMetaData: IActionMetadata): azdata.Component { - const maxWidth = 200; + const maxWidth = 150; const videosContainer = view.modelBuilder.flexContainer().withLayout({ flexFlow: 'column', width: maxWidth, - height: '200px', + height: maxWidth, justifyContent: 'flex-start' }).component(); const video1Container = view.modelBuilder.divContainer().withProperties({ @@ -196,10 +293,9 @@ export class DashboardWidget { }).component(); const descriptionComponent = view.modelBuilder.text().withProperties({ value: linkMetaData.description, - width: '200px', + width: maxWidth, height: '50px', CSSStyles: { - //'color': '#605E5C', 'font-size': '12px', 'margin': '0px' } @@ -214,9 +310,9 @@ export class DashboardWidget { 'background-image': `url(${vscode.Uri.file(this.asAbsolutePath(linkMetaData.iconPath?.light || ''))})`, 'background-repeat': 'no-repeat', 'background-position': 'top', - 'width': `150px`, + 'width': `${maxWidth}px`, 'height': '110px', - 'background-size': `150px 120px` + 'background-size': `{maxWidth}px 120px` } }); videosContainer.addItem(descriptionComponent); @@ -234,39 +330,46 @@ export class DashboardWidget { value: constants.dashboardLinksTitle, CSSStyles: { 'font-size': '18px', - //'color': '#323130', 'font-weight': 'bold', 'margin': '0px' } }).component(); - let mlsLink: string; - if (utils.isWindows()) { - mlsLink = constants.installMlsWindowsDocs; - } else { - mlsLink = constants.installMlsLinuxDocs; - } - const mlsDocs = this.createLink(view, { - title: constants.mlsInstallMlsDocTitle, - description: constants.mlsInstallMlsDocDesc, - link: mlsLink - }); - let odbcLink: string; - if (utils.isWindows()) { - odbcLink = constants.odbcDriverWindowsDocuments; - } else { - odbcLink = constants.odbcDriverLinuxDocuments; - } - const rdbcDocs = this.createLink(view, { + + const links = [{ + title: constants.sqlMlDocTitle, + description: constants.sqlMlDocDesc, + link: constants.mlDocLink + }, { + title: constants.sqlMlsDocTitle, + description: constants.sqlMlsDocDesc, + link: constants.mlsDocLink + }, + { + title: constants.sqlMlsAzureDocTitle, + description: constants.sqlMlsAzureDocDesc, + link: constants.mlsAzureDocLink + }]; + + const moreLink = { title: constants.mlsInstallOdbcDocTitle, description: constants.mlsInstallOdbcDocDesc, - link: odbcLink - }); + link: utils.isWindows() ? constants.odbcDriverWindowsDocuments : constants.odbcDriverLinuxDocuments + }; + const styles = { + 'padding': '10px' + }; - linksContainer.addItems([titleComponent, mlsDocs, rdbcDocs], { + linksContainer.addItem(titleComponent, { CSSStyles: { 'padding': '10px' } }); + + linksContainer.addItems(links.map(l => this.createLink(view, l)), { + CSSStyles: styles + }); + + this.addShowMorePanel(view, linksContainer, this.createLink(view, moreLink), { 'padding-left': '10px' }, styles); return linksContainer; } @@ -283,21 +386,19 @@ export class DashboardWidget { value: linkMetaData.description, width: maxWidth, CSSStyles: { - //'color': '#605E5C', 'font-size': '12px', 'margin': '0px' } }).component(); const linkContainer = view.modelBuilder.flexContainer().withLayout({ flexFlow: 'row', - width: maxWidth, + width: maxWidth + 10, justifyContent: 'flex-start' }).component(); const linkComponent = view.modelBuilder.hyperlink().withProperties({ label: linkMetaData.title, url: linkMetaData.link, CSSStyles: { - 'color': '#3794ff', 'font-size': '14px', 'margin': '0px' } @@ -316,8 +417,8 @@ export class DashboardWidget { CSSStyles: { 'padding': '0px', 'padding-right': '5px', - 'height': '10px', - 'margin': '0px' + 'margin': '0px', + 'color': '#006ab1' } }); linkContainer.addItem(image, { @@ -365,8 +466,8 @@ export class DashboardWidget { title: constants.importModelTitle, description: constants.importModelDesc, iconPath: { - dark: this.asAbsolutePath('images/makePredictions.svg'), - light: this.asAbsolutePath('images/makePredictions.svg'), + dark: this.asAbsolutePath('images/manageModels.svg'), + light: this.asAbsolutePath('images/manageModels.svg'), }, link: '', command: constants.mlManageModelsCommand @@ -418,7 +519,6 @@ export class DashboardWidget { value: taskMetaData.title, CSSStyles: { 'font-size': '14px', - //'color': '#323130', 'font-weight': 'bold', 'margin': '0px' } @@ -426,19 +526,13 @@ export class DashboardWidget { const descriptionComponent = view.modelBuilder.text().withProperties({ value: taskMetaData.description, CSSStyles: { - //'color': '#605E5C', 'font-size': '13px', 'margin': '0px' } }).component(); const linkComponent = view.modelBuilder.hyperlink().withProperties({ label: constants.learnMoreTitle, - url: taskMetaData.link, - CSSStyles: { - //'background-color': '#F2F2F2', - 'color': '#3794ff', - 'margin': '0px' - } + url: taskMetaData.link }).component(); const image = view.modelBuilder.image().withProperties({ width: '20px', @@ -452,7 +546,8 @@ export class DashboardWidget { 'padding': '0px', 'padding-bottom': '5px', 'width': '180px', - 'margin': '0px' + 'margin': '0px', + 'color': '#006ab1' } }); iconContainer.addItem(image, { @@ -469,7 +564,6 @@ export class DashboardWidget { }); mainContainer.addItems([iconContainer], { CSSStyles: { - //'background-color': '#f4f4f4', 'padding': '10px', 'border-radius': '5px', 'border-color': '#f2f2f2', diff --git a/extensions/machine-learning-services/src/views/wizardView.ts b/extensions/machine-learning/src/views/wizardView.ts similarity index 100% rename from extensions/machine-learning-services/src/views/wizardView.ts rename to extensions/machine-learning/src/views/wizardView.ts diff --git a/extensions/machine-learning-services/tsconfig.json b/extensions/machine-learning/tsconfig.json similarity index 100% rename from extensions/machine-learning-services/tsconfig.json rename to extensions/machine-learning/tsconfig.json diff --git a/extensions/machine-learning-services/yarn.lock b/extensions/machine-learning/yarn.lock similarity index 100% rename from extensions/machine-learning-services/yarn.lock rename to extensions/machine-learning/yarn.lock diff --git a/scripts/test-extensions-unit.bat b/scripts/test-extensions-unit.bat index a41fda7957..0badb9afe2 100755 --- a/scripts/test-extensions-unit.bat +++ b/scripts/test-extensions-unit.bat @@ -26,7 +26,7 @@ if "%INTEGRATION_TEST_ELECTRON_PATH%"=="" ( call yarn gulp compile-extension:mssql call yarn gulp compile-extension:notebook call yarn gulp compile-extension:resource-deployment - call yarn gulp compile-extension:machine-learning-services + call yarn gulp compile-extension:machine-learning call yarn gulp compile-extension:sql-database-projects echo "Running integration tests with '%INTEGRATION_TEST_ELECTRON_PATH%' as build." @@ -82,9 +82,9 @@ echo ****************************************** call "%INTEGRATION_TEST_ELECTRON_PATH%" --extensionDevelopmentPath=%~dp0\..\extensions\resource-deployment --extensionTestsPath=%~dp0\..\extensions\resource-deployment\out\test --user-data-dir=%VSCODEUSERDATADIR% --extensions-dir=%VSCODEEXTENSIONSDIR% --remote-debugging-port=9222 --disable-telemetry --disable-crash-reporter --disable-updates --nogpu echo ******************************* -echo *** starting machine-learning-services tests *** +echo *** starting machine-learning tests *** echo ******************************* -call "%INTEGRATION_TEST_ELECTRON_PATH%" --extensionDevelopmentPath=%~dp0\..\extensions\machine-learning-services --extensionTestsPath=%~dp0\..\extensions\machine-learning-services\out\test --user-data-dir=%VSCODEUSERDATADIR% --extensions-dir=%VSCODEEXTENSIONSDIR% --remote-debugging-port=9222 --disable-telemetry --disable-crash-reporter --disable-updates --nogpu +call "%INTEGRATION_TEST_ELECTRON_PATH%" --extensionDevelopmentPath=%~dp0\..\extensions\machine-learning --extensionTestsPath=%~dp0\..\extensions\machine-learning\out\test --user-data-dir=%VSCODEUSERDATADIR% --extensions-dir=%VSCODEEXTENSIONSDIR% --remote-debugging-port=9222 --disable-telemetry --disable-crash-reporter --disable-updates --nogpu REM echo ****************************************** REM echo *** starting mssql tests *** diff --git a/scripts/test-extensions-unit.sh b/scripts/test-extensions-unit.sh index 591ce615eb..6ee107a6ff 100755 --- a/scripts/test-extensions-unit.sh +++ b/scripts/test-extensions-unit.sh @@ -80,9 +80,9 @@ echo ****************************************** "$INTEGRATION_TEST_ELECTRON_PATH" $LINUX_NO_SANDBOX --extensionDevelopmentPath=$ROOT/extensions/resource-deployment --extensionTestsPath=$ROOT/extensions/resource-deployment/out/test --user-data-dir=$VSCODEUSERDATADIR --extensions-dir=$VSCODEEXTDIR --disable-telemetry --disable-crash-reporter --disable-updates --nogpu echo ************************************************ -echo *** starting machine-learning-services tests *** +echo *** starting machine-learning tests *** echo ************************************************ -"$INTEGRATION_TEST_ELECTRON_PATH" $LINUX_NO_SANDBOX --extensionDevelopmentPath=$ROOT/extensions/machine-learning-services --extensionTestsPath=$ROOT/extensions/machine-learning-services/out/test --user-data-dir=$VSCODEUSERDATADIR --extensions-dir=$VSCODEEXTDIR --disable-telemetry --disable-crash-reporter --disable-updates --nogpu +"$INTEGRATION_TEST_ELECTRON_PATH" $LINUX_NO_SANDBOX --extensionDevelopmentPath=$ROOT/extensions/machine-learning --extensionTestsPath=$ROOT/extensions/machine-learning/out/test --user-data-dir=$VSCODEUSERDATADIR --extensions-dir=$VSCODEEXTDIR --disable-telemetry --disable-crash-reporter --disable-updates --nogpu # echo ****************************************** # echo *** starting mssql tests ***