Skip to end of metadata
Go to start of metadata
Пример 1
Условие

Есть список книг, привязанных к определенным категориям.

1
2
3
4
5
6
 CLASS Category 'Категория';
name 'Наименование' = DATA ISTRING[50] (Category);

CLASS Book 'Книга';
name 'Наименование' = DATA ISTRING[50] (Book);
category 'Категория' = DATA Category (Book);

Нужно построить форму с деревом, в котором на верхнем уровне будет категория, а под ним - товар.

Решение

1
2
3
4
5
 FORM books 'Книги'
    TREE cb c = Category, b = Book
    PROPERTIES name(c), name(b)
    FILTERS category(b) == c 
;

Пример 2
Условие

Аналогичен Примеру 1, но для категории задана иерархия путем указания родителя каждой категории.

1
 parent 'Родитель' = DATA Category (Category);

Нужно построить форму с деревом, в котором будут отображаться категории в виде дерева.

Решение

1
2
3
4
 FORM categories 'Категории'
    TREE categories c = Category PARENT parent(c)
    PROPERTIES(c) name
;

Пример 3
Условие

Аналогичен Примеру 2.

Нужно сделать форму с деревом категорий, справа от которого показать книги, которые относятся к текущей категории и всем ее потомкам.

Решение

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
 level 'Уровень' (Category child, Category parent) = RECURSION 1l IF child IS Category AND parent == child
                                                                 STEP 2l IF parent == parent($parent) MATERIALIZED;

FORM categoryBooks 'Книги по категориям'
    TREE categories c = Category PARENT parent(c)
    PROPERTIES(c) name

    OBJECTS b = Book
    PROPERTIES(b) name
    FILTERS level(category(b), c)
;

DESIGN categoryBooks {
    NEW pane FIRST {
        fill = 1;
        type = SPLITH;
        MOVE BOX(TREE categories);
        MOVE BOX(b);
    }
}

  • No labels