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

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

вопрос: как на классах описать такую структуру?
...
Рейтинг: 0 / 0
подскажите как лучше организовать структуру меню
    #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
подскажите как лучше организовать структуру меню
    #36962052
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuraMОсновным во всем этом "безобразии" является свойство:
Через это свойство класс ссылается сам на себя, а это дает возможность построить сколь угодно сложную структуру предприятия (в нашем случае).
Ссылаться "на себя" таки не обязательно... Если только поддерживать целостность самим Кащеем...

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

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

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

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

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

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


КодНазваниеПодчинение1Файл2Новый13Редактировать14Вид5Удалить16Масштаб47Кодировка48Печать1
Начальный уровень - это строки где "Подчинение" пусто. Далее вывод по подчинению...
...
Рейтинг: 0 / 0
подскажите как лучше организовать структуру меню
    #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
подскажите как лучше организовать структуру меню
    #36963953
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
понял
спасибо
будем пробовать
...
Рейтинг: 0 / 0
подскажите как лучше организовать структуру меню
    #36968485
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007задача:
написать классы и страницу для формирования меню

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

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

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


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