Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / подскажите как лучше организовать структуру меню / 11 сообщений из 11, страница 1 из 1
17.11.2010, 12:49
    #36961388
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
задача:
написать классы и страницу для формирования меню

никак не могу сообразить как лучше сделать
формирую класс меню
в котором имеются свойства одинаковые для всех пунктов меню
name, title, link, resource, и т.д.
соответственно пункты главного меню могут содержать пункты второго уровня, пункты второго уровня могут содержать пункты третьего, и т.д.
сколько, каких неизвестно

вопрос: как на классах описать такую структуру?
...
Рейтинг: 0 / 0
17.11.2010, 15:36
    #36961942
YuraM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
Доброго времени суток, Ymka2007!

Может этот фрагмент класса поможет.
Делали для структуры предприятия. Структура заранее не известная.

Основным во всем этом "безобразии" является свойство:
Код: plaintext
1.
Property NameDepartment As DATA.PERSONNELDEPARTMEN.Department;
Через это свойство класс ссылается сам на себя, а это дает возможность построить сколь угодно сложную структуру предприятия (в нашем случае).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
/// класс подразделения предприятия
Class DATA.PERSONNELDEPARTMEN.Department Extends (%Persistent, DATA.CORE.Kernel) [ Inheritance = right ]
{

/// Ссылка на предприятие
Relationship Enterprise As DATA.PERSONNELDEPARTMEN.Enterprise[ Cardinality = one, InitialExpression = " ", Inverse = Departmen ];
Index EnterpriseIndex On Enterprise;

/// подразделение предприятия
Property NameDepartment As DATA.PERSONNELDEPARTMEN.Department;

/// Код подразделения предприятия
Property CodDepartment As %String(MAXLEN =  20 , TRUNCATE =  1 );

/// Полное наименование подразделения предприятия
Property Name As %String(MAXLEN =  200 , TRUNCATE =  1 )[ Required ];

/// Сокращенное наименование подразделения предприятия
Property ShortName As %String(MAXLEN =  20 , TRUNCATE =  1 );

/// Тип подразделения 
Property TypeDepartment As %String(MAXLEN =  20 , TRUNCATE =  1 , VALUELIST = ",1,2,3,4,5,6,7");

/// Профиль подразделения
Relationship ProfileID As DATA.PERSONNELDEPARTMEN.ProfileDepartmen [ Cardinality = one, Inverse = DepartmenID ];

Index ProfileIDIndex On ProfileID;

/// состояние
Property stateDepartment As %Boolean;

/// Номер по-порядку в меню
/// Property NomInMenu As %Integer(MAXVAL =  20 , MINVAL =  1 ); 

/// Выбор всех подразделений 
Query GetAll() As %SQLQuery(CONTAINID =  1 )
{
SELECT %ID,
        Name,
        Enterprise->Name As NameEnterprise
        FROM DATA_PERSONNELDEPARTMEN.Department 
        ORDER BY Name
}

/// Выбор подразделений в заданном предприятии 
Query QueryDepartmentForEnterprise(enterprise As %String) As %SQLQuery(CONTAINID =  1 )
{
SELECT %ID,
		TypeDepartment,
		NameDepartment->Name As NameDepat,
		CodDepartment,
		Name,
		ShortName,
		Enterprise->Name As NameEnterprise				
		FROM DATA_PERSONNELDEPARTMEN.Department
WHERE (Enterprise->%ID = :enterprise)
ORDER BY Name
}

/// Выбор меню корневого уровня
Query QueryMenu(id As %String) As %SQLQuery(CONTAINID =  1 )
{
SELECT %ID,
		TypeDepartment,
		NameDepartment->Name As NameDepat,
		CodDepartment,
		Name,
		ShortName,
		Enterprise->Name As NameEnterprise
FROM DATA_PERSONNELDEPARTMEN.Department	
WHERE (NameDepartment is null ) And (Enterprise->%ID=:id)
ORDER BY Name
}

/// Выбор подменю в заданном меню пользователя
Query QueryPodMenuForMenu(codMenu As %String) As %SQLQuery(CONTAINID =  1 )
{
SELECT %ID,
		TypeDepartment,
		NameDepartment->Name As NameDepat,
		CodDepartment,
		Name,
		ShortName,
		Enterprise->Name As NameEnterprise
FROM DATA_PERSONNELDEPARTMEN.Department	
WHERE (NameDepartment->%ID=:codMenu )
}

/// Проверка наличия подменю
ClassMethod countPodMenuForMenu(codMenu As %String) As %Library.String [ SqlProc ]
{
 set TotalRecord = - 1  
 &sql(SELECT  COUNT(*) INTO :TotalRecord
 FROM DATA_PERSONNELDEPARTMEN.Department
 WHERE (NameDepartment->%ID=:codMenu )
)
 quit TotalRecord
}

......................................

}

...
Рейтинг: 0 / 0
17.11.2010, 16:09
    #36962052
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
YuraMОсновным во всем этом "безобразии" является свойство:
Через это свойство класс ссылается сам на себя, а это дает возможность построить сколь угодно сложную структуру предприятия (в нашем случае).
Ссылаться "на себя" таки не обязательно... Если только поддерживать целостность самим Кащеем...

Вот такая схемка "держит" дерево любой вложенности

МенюКодНазвание пунктаКому подчиняется (Код родителя)Другие пля
...
Рейтинг: 0 / 0
18.11.2010, 12:18
    #36963505
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
krvsaYuraMОсновным во всем этом "безобразии" является свойство:
Через это свойство класс ссылается сам на себя, а это дает возможность построить сколь угодно сложную структуру предприятия (в нашем случае).
Ссылаться "на себя" таки не обязательно... Если только поддерживать целостность самим Кащеем...

Вот такая схемка "держит" дерево любой вложенности

МенюКодНазвание пунктаКому подчиняется (Код родителя)Другие пля

а в виде класса можешь изобразить?
ссылочная целостность будет при твоем варианте?
...
Рейтинг: 0 / 0
18.11.2010, 12:55
    #36963618
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
Ymka2007а в виде класса можешь изобразить?
Так просто несколько свойств и все...

Ymka2007ссылочная целостность будет при твоем варианте?
Нет.
Целостность при таком варианте нужно поддерживать самостоятельно (программно)...
...
Рейтинг: 0 / 0
18.11.2010, 13:00
    #36963640
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
Ymka2007 , тут лучше привести пример данных наверное


КодНазваниеПодчинение1Файл2Новый13Редактировать14Вид5Удалить16Масштаб47Кодировка48Печать1
Начальный уровень - это строки где "Подчинение" пусто. Далее вывод по подчинению...
...
Рейтинг: 0 / 0
18.11.2010, 13:59
    #36963843
YuraM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
Для поддержки целостности Кащеем можно подправить класс следующим образом...

Код: plaintext
1.
2.
3.
4.
5.
...
Relationship NameDepartment As DATA.PERSONNELDEPARTMEN.Department[ Cardinality = one, Inverse = DepartmentID];

Relationship DepartmentID As DATA.PERSONNELDEPARTMEN.Department [ Cardinality = many, Inverse = NameDepartment ];
...
...
Рейтинг: 0 / 0
18.11.2010, 14:31
    #36963953
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
понял
спасибо
будем пробовать
...
Рейтинг: 0 / 0
21.11.2010, 20:23
    #36968485
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
Ymka2007задача:
написать классы и страницу для формирования меню

никак не могу сообразить как лучше сделать
формирую класс меню
в котором имеются свойства одинаковые для всех пунктов меню
name, title, link, resource, и т.д.
соответственно пункты главного меню могут содержать пункты второго уровня, пункты второго уровня могут содержать пункты третьего, и т.д.
сколько, каких неизвестно

вопрос: как на классах описать такую структуру?
Почему бы не взять за основу реализацию встроенных классов ZEN: %ZEN.Component.menu, %ZEN.Component.menuItem, %ZEN.Component.contextMenu и других?

PS: на "Школа Инноваций - 2010" сообщили, что ориентировочно к будущей весне должна выйти первая бета версия RAD-инструмента для ZEN.
...
Рейтинг: 0 / 0
22.11.2010, 14:42
    #36969758
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
servit,
к сожалению на школе меня не было, а что это такое "RAD-инструмент"?
для отображения меню еще можно, но задачка немного иного толка. Отображение пока на втором плане
...
Рейтинг: 0 / 0
22.11.2010, 15:02
    #36969814
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите как лучше организовать структуру меню
Ymka2007к сожалению на школе меня не было, а что это такое "RAD-инструмент"?
RAD (от англ. rapid application development — быстрая разработка приложений)
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / подскажите как лучше организовать структуру меню / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]