2015-03-19 3 views
0

Я работаю над проектом с использованием Webix и Python/Flask, и я нажимаю на кирпичную стену с визуализацией виджета treeview. Моя проблема заключается в правильном построении JSON, необходимого для виджета. Я пытаюсь создать структуру каталогов данного примера:Создание JSON структуры каталогов для потребления виджем дерева Webix

Состав:

 
. 
├── dirone 
│   └── file 
├── dirthree 
│   ├── somedir 
│   │   └── anotherfile 
│   └── somefile 
├── dirtwo 
└── somefile 

Желаемый результат:

[ 
    { 
     "value": "dirone", 
     "path": "dirone", 
     "type": "folder", 
     "children": [ 
      { 
       "value": "file", 
       "path": "dirone/file", 
       "type": "file" 
      } 
     ] 
    }, 
    { 
     "value": "dirtwo", 
     "path": "dirtwo", 
     "type": "folder", 
     "children": [] 
    }, 
    { 
     "value": "dirthree", 
     "path": "dirthree", 
     "type": "folder", 
     "children": [ 
      { 
       "value": "somefile", 
       "path": "dirthree/somefile", 
       "type": "file" 
      }, 
      { 
       "value": "somedire", 
       "path": "dirone/file", 
       "type": "folder", 
       "children": [ 
        { 
         "value": "anotherfile", 
         "path": "dirthree/somedir/anotherfile", 
         "type": "file" 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     "value": "somefile", 
     "path": "somefile", 
     "type": "file" 
    } 
] 

Я стучал головой против этого за последние два часов, пытаясь получить метод, который может его отобразить. Есть ли способ, который генерирует структуру? Любая помощь будет оценена!

ответ

0

На самом деле это не решение, но виджеты Webix могут быть настроены на использование json с другой структурой или, в случае или с деревом, загружать простой список записей данных и строить древовидную структуру путем группировки данных по некоторым параметрам

Проверьте, например http://docs.webix.com/samples/17_datatree/01_loading/07_load_group.html

+0

Прохладный, это пригодится. Я пытаюсь отойти от PyQt; все еще пытаясь понять некоторые из фреймворков js-виджета. – user1777667

0

Я думаю, что я получил это к тому, что мне нужно без os.walk(), но я до сих пор делаю это с помощью рекурсивной функции (BOO):

def pathTree(path,id=0): 
    id += 1 
     tree = {'value': os.path.basename(path)} 
     tree['path'] = path 
    tree['id'] = id 
     if os.path.isdir(path): 
      tree['type'] = "folder" 
      tree['data'] = [pathTree(os.path.join(path,x),id) for x in os.listdir(path)] 
    else: 
      tree['type'] = "file" 
    return(tree) 

Единственное, что я (хотя пока не очень бенефициарий), чтобы он записывал глубину уровня/итера.

Спасибо за предложения!

Смежные вопросы