Procházet zdrojové kódy

work in progress -- broken state

Afshin Darian před 8 roky
rodič
revize
bb1370ff7e

+ 21 - 18
packages/docmanager/src/dialogs.ts

@@ -10,8 +10,8 @@ import {
 } from '@jupyterlab/services';
 
 import {
- each, IIterator
-} from '@phosphor/algorithm';
+  JSONObject
+} from '@phosphor/coreutils'
 
 import {
   Widget
@@ -37,12 +37,11 @@ const FILE_CONFLICT_CLASS = 'jp-mod-conflict';
  * A stripped-down interface for a file container.
  */
 export
-interface IFileContainer {
+interface IFileContainer extends JSONObject {
   /**
-   * Returns an iterator over the container's items.
+   * The list of item names in the current working directory.
    */
-  items(): IIterator<Contents.IModel>;
-
+  items: string[];
   /**
    * The current working directory of the file container.
    */
@@ -120,18 +119,22 @@ class CreateFromHandler extends Widget {
     this._manager = manager;
     this._creatorName = creatorName;
 
-    // Check for name conflicts when the inputNode changes.
-    this.inputNode.addEventListener('input', () => {
-      let value = this.inputNode.value;
-      if (value !== this._orig) {
-        each(this._container.items(), item => {
-          if (item.name === value) {
-            this.addClass(FILE_CONFLICT_CLASS);
-            return;
-          }
-        });
-      }
-      this.removeClass(FILE_CONFLICT_CLASS);
+    const { services } = manager;
+    services.contents.get(container.path, { content: true }).then(contents => {
+      // Check for name conflicts when the inputNode changes.
+      this.inputNode.addEventListener('input', () => {
+        console.log('on input');
+        const value = this.inputNode.value;
+        if (value !== this._orig) {
+          contents.content.forEach((item: Contents.IModel) => {
+            if (item.name === value) {
+              this.addClass(FILE_CONFLICT_CLASS);
+              return;
+            }
+          });
+        }
+        this.removeClass(FILE_CONFLICT_CLASS);
+      });
     });
   }
 

+ 1 - 0
packages/filebrowser/src/buttons.ts

@@ -439,6 +439,7 @@ namespace Private {
     });
 
     each(registry.creators(), creator => {
+      console.log('boom', creator.name);
       command = `${prefix}:new-${creator.name}`;
       disposables.add(commands.addCommand(command, {
         execute: () => {

+ 5 - 6
packages/filebrowser/src/model.ts

@@ -221,7 +221,7 @@ class FileBrowserModel implements IDisposable {
    *   downloading.
    */
   download(path: string): Promise<void> {
-    return this._manager.services.contents.getDownloadUrl(path).then(url => {
+    return this.manager.services.contents.getDownloadUrl(path).then(url => {
       let element = document.createElement('a');
       element.setAttribute('href', url);
       element.setAttribute('download', '');
@@ -248,7 +248,7 @@ class FileBrowserModel implements IDisposable {
       return Promise.resolve(void 0);
     }
 
-    const manager = this._manager;
+    const manager = this.manager;
     const key = `file-browser-${id}:cwd`;
     const ready = manager.services.ready;
     return Promise.all([state.fetch(key), ready]).then(([cwd]) => {
@@ -292,7 +292,7 @@ class FileBrowserModel implements IDisposable {
 
     let path = this._model.path;
     path = path ? path + '/' + file.name : file.name;
-    return this._manager.services.contents.get(path, {}).then(() => {
+    return this.manager.services.contents.get(path, {}).then(() => {
       let msg = `"${file.name}" already exists`;
       throw new Error(msg);
     }, () => {
@@ -332,7 +332,7 @@ class FileBrowserModel implements IDisposable {
           content: Private.getContent(reader)
         };
 
-        this._manager.services.contents.save(path, model).then(contents => {
+        this.manager.services.contents.save(path, model).then(contents => {
           resolve(contents);
         }).catch(reject);
       };
@@ -361,7 +361,7 @@ class FileBrowserModel implements IDisposable {
     };
     this._items = contents.content;
     this._paths.clear();
-    each(contents.content, (model: Contents.IModel) => {
+    contents.content.forEach((model: Contents.IModel) => {
       this._paths.add(model.path);
     });
   }
@@ -430,7 +430,6 @@ class FileBrowserModel implements IDisposable {
   private _fileChanged = new Signal<this, Contents.IChangedArgs>(this);
   private _items: Contents.IModel[] = [];
   private _key: string = '';
-  private _manager: IDocumentManager = null;
   private _maxUploadSizeMb = 15;
   private _model: Contents.IModel;
   private _pathChanged = new Signal<this, IChangedArgs<string>>(this);