@@ -7,13 +7,14 @@ import { ITranslator } from '@jupyterlab/translation';
77import { addJupyterLabThemeChangeListener } from '@jupyter/web-components' ;
88import { Dialog , showDialog } from '@jupyterlab/apputils' ;
99
10- import { DriveListModel , DriveListView , IDrive } from './drivelistmanager' ;
10+ import { DriveListModel , DriveListView } from './drivelistmanager' ;
1111import { driveBrowserIcon } from '../icons' ;
12- import { CommandIDs } from '../token' ;
12+ import { CommandIDs , IDriveInfo } from '../token' ;
13+ import { getDrivesList , getExcludedDrives } from '../requests' ;
1314
1415export const openDriveDialogPlugin : JupyterFrontEndPlugin < void > = {
1516 id : 'jupyter-drives:widget' ,
16- description : 'Open a dialog to select drives to be added in the filebrowser.' ,
17+ description : 'Open a dialog to managed listed drives in the filebrowser.' ,
1718 requires : [ IFileBrowserFactory , ITranslator ] ,
1819 autoStart : true ,
1920 activate : (
@@ -25,68 +26,29 @@ export const openDriveDialogPlugin: JupyterFrontEndPlugin<void> = {
2526 const { commands } = app ;
2627 const { tracker } = factory ;
2728 const trans = translator . load ( 'jupyter_drives' ) ;
28- const selectedDrivesModelMap = new Map < IDrive [ ] , DriveListModel > ( ) ;
29+ const selectedDrivesModelMap = new Map <
30+ Partial < IDriveInfo > [ ] ,
31+ DriveListModel
32+ > ( ) ;
2933
30- let selectedDrives : IDrive [ ] = [
31- {
32- name : 'CoconutDrive' ,
33- url : '/coconut/url'
34- }
35- ] ;
36-
37- const availableDrives : IDrive [ ] = [
38- {
39- name : 'CoconutDrive' ,
40- url : '/coconut/url'
41- } ,
42- {
43- name : 'PearDrive' ,
44- url : '/pear/url'
45- } ,
46- {
47- name : 'StrawberryDrive' ,
48- url : '/strawberrydrive/url'
49- } ,
50- {
51- name : 'BlueberryDrive' ,
52- url : '/blueberrydrive/url'
53- } ,
54- {
55- name : '' ,
56- url : '/mydrive/url'
57- } ,
58- {
59- name : 'RaspberryDrive' ,
60- url : '/raspberrydrive/url'
61- } ,
34+ let selectedDrives : Partial < IDriveInfo > [ ] = [ ] ;
35+ getDrivesList ( ) . then ( ( drives : IDriveInfo [ ] ) => {
36+ selectedDrives = drives . map ( ( drive : IDriveInfo ) => ( {
37+ name : drive . name ,
38+ region : drive . region
39+ } ) ) ;
40+ } ) ;
6241
63- {
64- name : 'PineAppleDrive' ,
65- url : ''
66- } ,
42+ let availableDrives : Partial < IDriveInfo > [ ] = [ ] ;
43+ getExcludedDrives ( ) . then ( ( drives : IDriveInfo [ ] ) => {
44+ availableDrives = drives . map ( ( drive : IDriveInfo ) => ( {
45+ name : drive . name ,
46+ region : drive . region
47+ } ) ) ;
48+ } ) ;
6749
68- { name : 'PomeloDrive' , url : '/https://pomelodrive/url' } ,
69- {
70- name : 'OrangeDrive' ,
71- url : ''
72- } ,
73- {
74- name : 'TomatoDrive' ,
75- url : ''
76- } ,
77- {
78- name : '' ,
79- url : 'superDrive/url'
80- } ,
81- {
82- name : 'AvocadoDrive' ,
83- url : ''
84- }
85- ] ;
8650 let model = selectedDrivesModelMap . get ( selectedDrives ) ;
8751
88- //const model = new DriveListModel(availableDrives, selectedDrives);
89-
9052 commands . addCommand ( CommandIDs . openDrivesDialog , {
9153 execute : args => {
9254 const widget = tracker . currentWidget ;
@@ -109,8 +71,14 @@ export const openDriveDialogPlugin: JupyterFrontEndPlugin<void> = {
10971 } ,
11072
11173 icon : driveBrowserIcon . bindprops ( { stylesheet : 'menuItem' } ) ,
112- caption : trans . __ ( 'Add drives to filebrowser.' ) ,
113- label : trans . __ ( 'Add Drives To Filebrowser' )
74+ caption : trans . __ ( 'Manage drives listed in filebrowser.' ) ,
75+ label : trans . __ ( 'Manage listed drives' )
76+ } ) ;
77+
78+ app . contextMenu . addItem ( {
79+ command : CommandIDs . openDrivesDialog ,
80+ selector : '#drive-file-browser.jp-SidePanel' ,
81+ rank : 100
11482 } ) ;
11583 }
11684} ;
0 commit comments