Ответить на тему  [ 1 сообщение ] 
 
Автор Сообщение
Администратор
Аватар пользователя

Зарегистрирован: 27 ноя 2011, 01:03
Сообщений: 205
Откуда: Москва
Сообщение Техническое задание на Web-каталогизатор софта
Инсталляция и запуск

Дистрибутив приложения разворачивается под web-сервером, первоначальный старт осуществляется с инсталляционной страницы из специальной папки, где указываются параметры соединения с предварительно созданной пустой БД под управлением PostgreSQL. Если соединение удается установить - производится создание необходимых объектов БД (предварительно пользователю предоставляется возможность ввести свой префикс для названий объектов) и другие инсталляционные действия, которые будут соответствовать конкретной реализации продукта. Если соединение с БД не удается установить, пользователь должен получить соответствующее сообщение. На странице проверки соединения с БД (или на следующей после неё) должны также присутствовать результаты проверки других требований приложения, если таковые имеются (например php определенной версии, какие-то библиотеки и т.п.). Перед завершением инсталляции у пользователя запрашиваются логин и пароль администратора каталогизатора, которые должны быть сохранены в БД или в файле настроек.
После инсталляции, папка с инсталляционной страницей должны быть удалены (автоматически или вручную - о чем пользователю должно быть сообщено).

Последующий запуск должен осуществляться либо штатно - переходом по ссылке на соответствующий домен, где размещается каталогизатор (например http://myfirstdomen.ru), либо переходом на страницу администратора в том же домене (например http://myfirstdomen.ru/admin.html). В первом случае веб-форма каталогизатора появляется на экране сразу и все данные на ней доступны только для просмотра, сортировки, поиска и т.п. (доступ read-only). Во втором случае, стилизация интерфейса не меняется, но функционал расширяется - вся информация становится доступна для добавления/удаления/редактирования, появляются соответствующие кнопки-иконки (добавить, сохранить, удалить), поля основного грида и все расширенные атрибуты (отдельная детализация выбранной записи грида) после двойного клика переходят в режим редактирования. Лучше, если изменения будут сохраняться в базе автоматически, при выходе поля из режима редактирования. Записи основного грида в режиме редактирования должны быть доступны для множественного выделения с целью массового удаления записей - выбор нескольких произвольных, выбор всех от текущей до произвольной записи, выбор всех записей. Также, в режиме администратора следует предусмотреть возможность редактирования содержимого таблиц-справочников.
Для всех полей, подразумевающих хранение html-текста (типо поля text/clob) при переходе в режим редактирования (администраторский режим) должен вызываться в модальном окне мини-редактор html с возможностью как визуализированного редактирования, так и в режиме исходного текста html. Существует широкий выбор готовых решений таких редакторов, следует подобрать наиболее функциональный и обладающий удачным дизайном интерфейса.


Структура веб-интерфейса каталогизатора

Табличный грид
Основа приложения - таблица PROD_LIST, содержимое которой отображается в верхней части формы в виде грида с чрезстрочной раскраской, примыкая к правому краю окна. По умолчанию в гриде (при первичном запуске) отображаются все записи таблицы PROD_LIST, независимо от наличия или отсутствия дочерних записей в других таблицах. Изначально отображаются поля NAME ("Название"), "Галерея", YEAR ("Год выпуска"), AUTHORS ("Авторы"), PUBLISH ("Издательство"), TYPE_TYPE_ID ("Категория" - в поле выводится текстовое описание из CATEGORIES.TYPE_NAME_GRID), вычисляемое поле RATING ("Рейтинг" - см. ниже) и поле PATH ("HDD-путь"), сортируемые по возрастанию/убыванию кликом в заголовке поля, а также скрываемые/возвращаемые через контекстное меню грида; содержимое полей ZIP_BIN_FILE (обязательно хранит единственный zip-файл) и ZIP_SRC_FILE (может хранить единственный zip-файл) отображается в виде ярлыков с рисунком архива, клик по которым приводит к скачиванию файла, хранящегося в соответствующем поле. Поля ZIP_BIN_FILE и ZIP_SRC_FILE не могут быть сортируемыми, не могут скрываться, и лучше, если они будут визуально отображаться как единое поле "bin & source", где будет либо одна обязательная иконка для скачивания zip-файла из ZIP_BIN_FILE, либо две, если поле ZIP_SRC_FILE - не пустое).
Количество записей, отображаемых одновременно в гриде (с разбивкой на страницы), должно быть настраиваемым через контекстное меню грида (или другой элемент управления) - 0 (без ограничений), 10, 50, 100, 500, 1000.
Поля CRITICAL и DEF в гриде не отображаются, а хранимую в них информацию следует отображать во фрейме детализации текущей записи грида, располагающемся под гридом, подробнее описано ниже.
При редактировании содержимого поля DEF в администраторском режиме, должен вызываться модальный мини-редактор html.
Порядок следования колонок грида должен быть настраиваемым - например перетаскиванием их мышью за шапку поля.
При наведении указателя мыши на заголовок любого поля грида, должна появляться всплывающая подсказка, задаваемая для всех полей грида в специальном файле локализации.

Дополнительно, для каждого из полей NAME, YEAR, AUTHORS, PUBLISH должны присутствовать поля поиска, набираемые в которых значения подставляются в качестве значений условий like ... (где пользователь может указывать служебные символы '%', '&' и т.п.) в SQL-запрос.
Также, должно присутствовать общее поле поиска, содержимое которого ищется по всем текстовым полям таблицы PROD_LIST - NAME, YEAR, AUTHORS, PUBLISH, CRITICAL, DEF.
Каждое посимвольное изменение в любом из полей поиска, должно приводить к обновлению содержимого грида в соответствии с новым содержимым поля поиска. Пример реализации дизайна для схожего по функционалу грида: Пример

Рейтинг и комментарии
Помимо полей PROD_LIST, в гриде должно отображаться поле "Рейтинг", вычисляемое для каждой записи как
select avg(RATING) from RATINGS where PRDL_PRDL_ID = P_PRDL_ID
где P_PRDL_ID - идентификатор записи из PROD_LIST, для которой производится вычисление.

Если select вернет null, в гриде должно отобразиться пустое поле (рейтинг отсутствует).

Возможность добавления рейтинга и комментария разрешена любому интернет-пользователю, при этом пользователю должно быть обозначено, что рейтинг задается в диапазоне 1-100 (а не 1-5, 1-10). Помимо рейтинга требуется ввести и комментарий, если пользователь не указал ни рейтинг, ни комментарий - он получает отказ в добавлении своей записи. Также от пользователя ожидается ввод его имени и если он его не указал, то по умолчанию добавляется имя "Аноним" (оно заранее прописывается в поле редактирования серым шрифтом, как значение по умолчанию). После добавления записи, пользователь с тем же ip-адресом (который сохраняется в соответствующем поле IP таблицы RATINGS) может отредактировать или удалить введенную запись в течении 5 минут, по истечении 5 минут удаление становится невозможным. Повторное добавление комментария от пользователя с тем же IP невозможно.
При просмотре списка комментариев, оставленных другими пользователями (на всплывающей форме), должны отображаться имя, комментарий каждого пользователя и выставленный им рейтинг.

Галерея
Еще одно генерируемое поле грида - не сортируемая колонка с названием "Галерея", где размещается ярлык-гиперссылка, при клике по которому открывается галерея с удобным просмотром скриншотов и/или видео, примерно как это сделано тут, во втором столбце: viewtopic.php?f=23&t=5496
Если не найдено ни одного скриншота или видео в таблицах IMAGES и VIDEOS для конкретного PRDL_ID, то для этой записи поле "Галерея" остается пустым.

Дерево категорий
Слева от грида, примыкая к верхней границе формы, располагается дерево категорий программного обеспечения (произвольной глубины вложенности), автоматически генерируемое на основе содержимого таблицы CATEGORIES. Первоначально дерево отображается в левой части веб-формы в свернутом виде (отображаются только категории верхнего уровня с наличием "+" для разворачивания); в гриде таблицы PROD_LIST, как уже говорилось, изначально отображаются все записи, но при клике на каком-то из узлов/листьев дерева категорий - в гриде остаются только связанные с выбранной категорией записи таблицы PROD_LIST. Верхним пунктом дерева должна быть фиктивная категория "Все категории", выбор которой возвращает грид к отображению всех записей. Фрейм с деревом должен иметь возможность сворачиваться влево, автоматически уступая освобождающееся место гриду. Также, граница между деревом и гридом должна иметь возможность перемещения, с целью уменьшения ширины первого в пользу второго и наоборот.

Блок детализации
Под гридом располагается блок детализации выбранной записи грида. Блок содержит (перечислено в порядке расположения сверху вниз):

● Прокручиваемую горизонтальную превью-галерею фото и видео на основе выборки из таблиц IMAGES и VIDEOS. При крике на любой из превью фон затемняется и галерею можно просматривать в удобном виде; есть готовые реализации подобных галерей например на основе highslide: http://www.forum.pk-fpga.ru/viewtopic.php?f=23&t=5496 - клик по ярлыкам во втором поле;
Превью галерея должна выглядеть примерно так:
Изображение

● Подблок "Критичные требования и замечания", содержащий растянутый на всю ширину блока детализации текст из поля PROD_LIST.CRITICAL

Ниже расположен подблок с группирующими полями, в две или более колонки (количество колонок автоматически увеличивается при растягивании формы и увеличении ширины блока детализации):

● Поле "Работает на платформе", включающее в себя вертикальный список всех значений PLATFORM_DICT.PLATFORM_NAME, напротив каждого из которых выставлено "Да" или "Нет", что определяется значением поля STATUS соответствующей записи таблицы PLATFORM_REQS, дочерней по отношений к детализируемой записи PROD_LIST. Если дочерняя запись в таблице PLATFORM_REQS отсутствует, напротив такого значения PLATFORM_DICT.PLATFORM_NAME выставляется значение "Неизвестно", отображаемое светло-серым шрифтом.

● Поле "Проверено с модулем", включающее в себя вертикальный список всех значений MODULES_DICT.MODULE_NAME, напротив каждого из которых выставлено "Да" или "Нет", что определяется значением поля STATUS соответствующей записи таблицы MODULES_REQS, дочерней по отношений к детализируемой записи PROD_LIST. Если дочерняя запись в таблице MODULES_REQS отсутствует, напротив такого значения MODULES_DICT.MODULE_NAME выставляется значение "Неизвестно", отображаемое светло-серым шрифтом.

● Поле "Совместимость с ОС", включающее в себя вертикальный список всех значений OS_DICT.OS_NAME, напротив каждого из которых выставлено "Да" или "Нет", что определяется значением поля STATUS соответствующей записи таблицы OS_REQS, дочерней по отношений к детализируемой записи PROD_LIST. Если дочерняя запись в таблице OS_REQS отсутствует, напротив такого значения OS_DICT.OS_NAME выставляется значение "Неизвестно", отображаемое светло-серым шрифтом.

● Поле "Используемые звуковые устройства", включающее в себя вертикальный список всех значений AUDIO_DICT.DEV_NAME, напротив каждого из которых выставлено "Да" или "Нет", что определяется значением поля STATUS соответствующей записи таблицы AUDIO_REQS, дочерней по отношений к детализируемой записи PROD_LIST. Если дочерняя запись в таблице AUDIO_REQS отсутствует, напротив такого значения AUDIO_DICT.DEV_NAME выставляется значение "Неизвестно", отображаемое светло-серым шрифтом.

● Поле "Могут использоваться прочие устройства", включающее в себя вертикальный список всех значений ADDITIONAL_DICT.SUBJECT_NAME, напротив каждого из которых выставлено "Да" или "Нет", что определяется значением поля STATUS соответствующей записи таблицы AUDIO_REQS, дочерней по отношений к детализируемой записи PROD_LIST. Если дочерняя запись в таблице ADDITIONAL_REQS отсутствует, напротив такого значения ADDITIONAL_DICT.SUBJECT_NAME выставляется значение "Неизвестно", отображаемое светло-серым шрифтом.

В нижней части блока детализации располагается html-описание из поля PROD_LIST.DEF, растягиваемое на всю ширину блока детализации. В случае, если документ не умещается, следует предусмотреть его всплытие по клику в отдельном дочернем окне с затемнением заднего фона (упомянутый Colorbox).

В нижней части формы, под фреймом детализации, в отдельном фрейме должны быть расположены пять списков checkbox'ов, фрейм с которыми должен иметь возможность сворачивания вниз или изменения высоты в пользу высоты расположенного выше фрейма детализации. Списки checkbox'ов соответствуют содержимому выборок
select PLATFORM_NAME from PLATFORM_DICT
select MODULE_NAME from MODULES_DICT
select OS_NAME from OS_DICT
select DEV_NAME from AUDIO_DICT
select SUBJECT_NAME from ADDITIONAL_DICT

Имя каждого отображаемого checkbox'а, в случае, если соответствующее ему поле xxx_DICT.DEF не пустое, представляется гиперссылкой, при нажатии на которую всплывает окно, затемняющее задний фон и отображающее html-документ, находящийся в xxx_DICT.DEF. Готовое решения для такого отображения html это например Colorbox: http://www.jacklmoore.com/colorbox/example1 - нажать на ссылку "Inline HTML".

Изначально все checkbox'ы сброшены, что означает отсутствие необходимости фильтровать выборку основного грида по наличию дочерних записей в соответствующих таблицах xxx_REQS. Т.е. например, если в списоке checkbox'ов

select DEV_NAME from AUDIO_DICT

ни один checkbox не выбран, то при выборке записей из PROD_LIST не производится попытка связывать их с записями таблицы AUDIO_REQS и выборка PROD_LIST никак не уменьшается за счет содержимого таблицы AUDIO_REQS. Если же к примеру checkbox'ы "AY" и "Covox" установлены, то из PROD_LIST будут отображены только те записи, для которых существуют дочерние записи в AUDIO_REQS со значениями 1 или 2 в поле ADEV_ADEV_ID, и у которых при этом в поле STATUS установлено значение "Y".


Таблицы БД

Таблица PROD_LIST, набор полей:
● PRDL_ID - автроинкрементный первичный ключ, тип поля INTEGER (4 байта, положительная часть);
● NAME - имя программы, varchar(255) not null;
● YEAR - год выпуска программы, тип поля date;
● AUTHORS - авторы программы, varchar(255);
● PUBLISH - издательство, varchar(100);
● TYPE_TYPE_ID - SMALLINT (2 байта, положительная часть) not null; - не уникальный внешний ключ на таблицу-словарь CATEGORIES - тип/категория ПО (игры, компиляторы, редакторы и т.п.),
● ZIP_BIN_FILE - поле для zip-архива с исполняемыми файлами, тип данных - bytea (аналог blob) not null;
● ZIP_SRC_FILE - поле для хранения zip-архива с исходниками, тип данных - bytea (аналог blob);
● PATH - путь расположения на образе винчестера БК, varchar(1000);
● CRITICAL - текстовое описание критичных, но не формализованных программных или аппаратных требований программы, тип данных varchar(2000);
● DEF - текстовое/html -описание программы, тип поля - TEXT (аналог CLOB)

Таблица IMAGES, набор полей:
● PRDL_PRDL_ID - не уникальный внешний ключ на PROD_LIST.PRDL_ID, тип поля INTEGER (4 байта, положительная часть), not null;
● IMAGES_NUM - автоинкрементный номер картинки, SMALLINT (2 байта, положительная часть) not null;
поля PRDL_PRDL_ID и IMAGES_NUM вместе составляют уникальный ключ, т.е. в пределах одного значения PRDL_PRDL_ID значения IMAGES_NUM повторяться не могут;
● IMG_FILE - поле для хранения файла-картинки (jpg, gif, png и другие стандартные), тип данных - bytea (аналог blob) not null;
● COMMENT - комментарий к картинке, varchar(150) - будет отображаться при наведении на картинку;

Таблица VIDEOS, набор полей:
● PRDL_PRDL_ID - не уникальный внешний ключ на PROD_LIST.PRDL_ID, тип поля INTEGER (4 байта, положительная часть), not null;
● VIDEOS_NUM - автоинкрементный номер видео, SMALLINT (2 байта, положительная часть) not null;
поля PRDL_PRDL_ID и VIDEOS_NUM вместе составляют уникальный ключ, т.е. в пределах одного значения PRDL_PRDL_ID значения IMAGES_NUM повторяться не могут;
● VIDEO_PATH - поле для хранения ссылки на видео (например youtobe), тип данных - varchar(255) not null;
● COMMENT - комментарий к картинке, varchar(150) - будет отображаться при наведении на видео;

Таблица CATEGORIES, набор полей:
● TYPE_ID - автроинкрементный первичный ключ SMALLINT (2 байта, положительная часть) not null;
● PARENT_TYPE_ID - родительская запись, SMALLINT (2 байта, положительная часть); Для записей верхнего уровня поле будет иметь значение null;
● TYPE_NAME - отображаемое в дереве название категории программного обеспечения (игры, компиляторы, граф. редакторы и т.п.), varchar(100);
● TYPE_NAME_GRID - отображаемое в гриде название категории программного обеспечения (игры, компиляторы, граф. редакторы и т.п.), varchar(100);

При инсталляции таблица заполняется значениями:
0 - null - Операционные системы - Операционная система
1 - null - Игры - Игра
1001 - 1 - 3D-шутеры - 3D-шутер
1002 - 1 - Платформеры - Платформер
1003 - 1 - Лабиринты - Лабиринт
1004 - 1 - Стратегии - Стратегия
1005 - 1 - Симуляторы - Симулятор
1006 - 1 - Леталки-Стрелялки - Леталка-Стрелялка
1007 - 1 - Квесты, приключения - Квесты, приключения
1008 - 1 - Бродилки-стрелялки - Бродилка-стрелялка
1009 - 1 - Головоломки, логические - Головоломки, логические
1010 - 1 - Эротика - Эротика

2 - null - Демосцена - Демосцена
2000 - 2 - Intro - Intro
2001 - 2 - Megademo - Megademo
2002 - 2 - Trackmo - Trackmo

3 - null - Мультимедиа - Мультимедиа
3000 - 3 - Графика, Картинки - Графика, Картинки
3001 - 3 - Музыкальные сборники - Музыкальный сборник
3002 - 3 - Плееры - Плеер

4 - null - Системный софт - Системый софт
4000 - 4 - СУБД - СУБД
4001 - 4 - Системы проектирования - Система проектирования
4002 - 4 - Переводчики, словари - Переводчики, словари
4003 - 4 - Математический софт - Математический софт
4004 - 4 - HDD & FDD сервис - HDD & FDD сервис
4005 - 4 - Архиваторы - Архиватор
4006 - 4 - Копировщики - Копировщик
4008 - 4 - Драйвера - Драйвер
4007 - 4 - Тесты оборудования - Тест оборудования
4008 - 4 - Обучалки, тренажеры - Обучалки, тренажеры

5 - null - Системы программирования - Система программирования
5000 - 5 - Компиляторы ЯВУ - Компилятор ЯВУ
5001 - 5 - Интерпретаторы ЯВУ - Интерпретатор ЯВУ
5002 - 5 - Ассемблеры - Ассемблер
5003 - 5 - Дизассемблеры - Дизассемблер
5004 - 5 - Отладчики - Отладчик

6 - null - Редакторы - Редактор
6000 - 6 - Графические - Графический редактор
6001 - 6 - Музыкальные - Музыкальный редактор
6002 - 6 - Шрифтовые - Редактор шрифтов
6003 - 6 - Текстовые - Текстовый редактор
6004 - 6 - Системы верстки - Система верстки

7 - null - Информация - Информация
7000 - 7 - Тех. документация - Тех. документация
7001 - 7 - Худ. литература - Худ. литература
7002 - 7 - Пресса - Пресса
7200 - 7002 - Газеты - Газета
7201 - 7002 - Журналы - Журнал
7202 - 7002 - Статьи - Статья
7003 - 7 - Юмор, графомания - Юмор, графомания
7004 - 7 - Каталоги - Каталог
7005 - 7 - Реклама, анонсы - Реклама, анонсы

6 - null - Прочее - Прочее

Таблица RATINGS - рейтинги программ и комментариев к ним от произвольных пользователей
● PRDL_PRDL_ID - не уникальный внешний ключ на PROD_LIST.PRDL_ID, тип поля INTEGER (4 байта, положительная часть), not null;
● RATING - рейтинг от очередного пользователя, тип поля SMALLINT (2 байта, положительная часть), ограничение значения - от 1 до 100 включительно, not null;
● COMMENT - комментарий пользователя, тип данных varchar(1000), not null;
● USERNAME - имя пользователя (по умолчанию "Аноним"), varchar(50);
● IP - ip-адрес пользователя, тип данных INET, not null;


Словари программных и аппаратных требований

Таблица PLATFORM_DICT - словарь базовых аппаратных платформ, набор полей:
● PLFM_ID - автоинкрементный первичный ключ, тип данных SMALLINT (2 байта, положительная часть);
● PLATFORM_NAME - название аудио устройства, тип данных varchar(100) not null;
● DEF - текстовое/html -описание платформы, тип поля - TEXT (аналог CLOB); при редактировании содержимого данного поля в администраторском режиме, должен вызываться модальный мини-редактор html.

При инсталляции таблица заполняется значениями:
0 - БК-0010(-01)
1 - БК-0011
2 - БК-0011М
3 - БК-0012

Таблица MODULES_DICT - словарь базовых аппаратных платформ, набор полей:
● MDLS_ID - автоинкрементный первичный ключ, тип данных SMALLINT (2 байта, положительная часть);
● MODULE_NAME - название модуля расширения, тип данных varchar(100) not null;
● DEF - текстовое/html -описание модуля расширения, тип поля - TEXT (аналог CLOB); при редактировании содержимого данного поля в администраторском режиме, должен вызываться модальный мини-редактор html.

При инсталляции таблица заполняется значениями:
0 - Штатный КНГМД (326)
1 - A16M-A512M
2 - SMK64-SMK512
3 - Booster-11

Таблица OS_DICT - словарь операционных систем, набор полей:
● OSYS_ID - автоинкрементный первичный ключ, тип данных SMALLINT (2 байта, положительная часть);
● OS_NAME - название операционной системы, тип данных varchar(100) not null;
● DEF - текстовое/html -описание программы, тип поля - TEXT (аналог CLOB); при редактировании содержимого данного поля в администраторском режиме, должен вызываться модальный мини-редактор html.

При инсталляции таблица заполняется следующими значениями:
0 - загрузчик
1 - MKDOS
2 - ANDOS
3 - CSIDOS
4 - DX-DOS
5 - MicroDOS
6 - NORD
7 - NORTON
8 - RT-11
9 - ОС БК

Таблица AUDIO_DICT - словарь аудио устройств, набор полей:
● ADEV_ID - автоинкрементный первичный ключ, тип данных SMALLINT (2 байта, положительная часть);
● DEV_NAME - название аудио устройства, тип данных varchar(100) not null;
● DEF - текстовое/html -описание программы, тип поля - TEXT (аналог CLOB); при редактировании содержимого данного поля в администраторском режиме, должен вызываться модальный мини-редактор html.

При инсталляции таблица заполняется тремя значениями:
0 - Beeper
1 - AY
2 - Covox

Таблица ADDITIONAL_DICT - словарь дополнительных программных/аппаратных требований платформы, набор полей:
● ADDP_ID - автоинкрементный первичный ключ, тип данных SMALLINT (2 байта, положительная часть);
● SUBJECT_NAME - название сущности, тип данных varchar(100) not null;
● DEF - текстовое/html -описание программы, тип поля - TEXT (аналог CLOB); при редактировании содержимого данного поля в администраторском режиме, должен вызываться модальный мини-редактор html.

При инсталляции таблица заполняется значениями:
0 - Джойстик
1 - Мышь "Марсианка"
2 - Пистолет
3 - Принтер
4 - PS/2-мышь
5 - PS/2-клавиатура


Таблицы дочерних записей для таблицы PROD_LIST, создаваемых на основе значений словарей PLATFORM_DICT, MODULES_DICT, OS_DICT, AUDIO_DICT и ADDITIONAL_DICT


Таблица PLATFORM_REQS, набор полей:
● PRDL_PRDL_ID - не уникальный внешний ключ на PROD_LIST.PRDL_ID, тип поля INTEGER (4 байта, положительная часть), not null;
● PLFM_PLFM_ID - не уникальный внешний ключ на словарь PLATFORM_DICT(PLFM_ID), тип поля SMALLINT (2 байта, положительная часть) not null; вместе с полем PRDL_PRDL_ID составляют уникальный ключ, т.е. при одном и том же значении PRDL_PRDL_ID значение поля PLFM_PLFM_ID повторяться не может;
● STATUS - тип данных varchar(1), поле может содержить только одно из двух значений "Y", "N"

Таблица MODULES_REQS, набор полей:
● PRDL_PRDL_ID - не уникальный внешний ключ на PROD_LIST.PRDL_ID, тип поля INTEGER (4 байта, положительная часть), not null;
● MDLS_MDLS_ID - не уникальный внешний ключ на словарь MODULES_DICT(MDLS_ID), тип поля SMALLINT (2 байта, положительная часть) not null; вместе с полем PRDL_PRDL_ID составляют уникальный ключ, т.е. при одном и том же значении PRDL_PRDL_ID значение поля MDLS_MDLS_ID повторяться не может;
● STATUS - тип данных varchar(1), поле может содержить только одно из двух значений "Y", "N"

Таблица OS_REQS, набор полей:
● PRDL_PRDL_ID - не уникальный внешний ключ на PROD_LIST.PRDL_ID, тип поля INTEGER (4 байта, положительная часть), not null;
● OSYS_OSYS_ID - не уникальный внешний ключ на словарь OS_DICT(OSYS_ID), тип поля SMALLINT (2 байта, положительная часть) not null; вместе с полем PRDL_PRDL_ID составляют уникальный ключ, т.е. при одном и том же значении PRDL_PRDL_ID значение поля OSYS_OSYS_ID повторяться не может;
● STATUS - тип данных varchar(1), поле может содержить только одно из двух значений "Y", "N"

Таблица AUDIO_REQS, набор полей:
● PRDL_PRDL_ID - не уникальный внешний ключ на PROD_LIST.PRDL_ID, тип поля INTEGER (4 байта, положительная часть), not null;
● ADEV_ADEV_ID - не уникальный внешний ключ на словарь AUDIO_DICT(ADEV_ID), тип поля SMALLINT (2 байта, положительная часть) not null; вместе с полем PRDL_PRDL_ID составляют уникальный ключ, т.е. при одном и том же значении PRDL_PRDL_ID значение поля ADEV_ADEV_ID повторяться не может;
● STATUS - тип данных varchar(1), поле может содержить только одно из двух значений "Y", "N"

Таблица ADDITIONAL_REQS, набор полей:
● PRDL_PRDL_ID - не уникальный внешний ключ на PROD_LIST.PRDL_ID, тип поля INTEGER (4 байта, положительная часть), not null;
● ADDP_ADDP_ID - не уникальный внешний ключ на словарь ADDITIONAL_DICT(ADDP_ID), тип поля SMALLINT (2 байта, положительная часть) not null; вместе с полем PRDL_PRDL_ID составляют уникальный ключ, т.е. при одном и том же значении PRDL_PRDL_ID значение поля ADDP_ADDP_ID повторяться не может;
● STATUS - тип данных varchar(1), поле может содержить только одно из двух значений "Y", "N"


Кастомные требования для вольной реализации разработчиком

1. Колонки грида должны иметь для отображаемые русскоязычные названия, которые можно переопределять в специальном файле локализации или где-то еще - на усмотрение разработчика.
2. Хотелось бы иметь возможность переключения в альтернативный режим отображения грида - когда слева добавляется колонка, где для каждой записи отображается картинка, соответствующая минимальному IMAGES.IMAGES_NUM для соответствующего PRDL_PRDL_ID, смаштабированная в размер 120*100 (ширина*высота) точек, при наведении на которую происходит её увеличение до размера 300*250 точек, при отводе мыши - восстанавливается в прежний размер. Если для определенного PRDL_ID нет ни одной картинки в таблице IMAGES, следует выводить шаблонную картинку с надписью "no images".
3. Основные блоки формы веб-интерфейса должны уметь сворачиваться (кроме грида), взаимно масштабироваться, равномерно подстраиваться под изменения размеров формы и других блоков.
4. Желательно настройки интерфейса, выполненные пользователем (сокрытие столбцов, фреймов, взаимное масштабирование фреймов и т.п.) - сохранять в cookie, для восстановления пользовательских настроек при последующих сеансах работы.
5. Допускаются отступления от ТЗ (по взаимному согласованию), если исполнитель считает, что есть более удобный или рациональный способ реализации определенной подзадачи.


08 май 2014, 10:00
Профиль
Показать сообщения за:  Сортировать по:  
Ответить на тему   [ 1 сообщение ] 

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000 - 2011 phpBB Group.
Design creat de Florea Cosmin Ionut | Translation by WebSok.Ru

закрыть

Советскому бытовому " БК-0011М" посвящается...


Вопреки всем скептикам и недоброжелателям, дело БК живет и развивается. Не за горами день, когда будет выпущен в свет "БК-0012 Pulsar" - расширенный FPGA-клон БК-0011М. Пока же на данном форуме Вы можете ознакомиться с репликами БК-0011М(-01), приставкой Booster-11, репликой контроллера SMK64 (а также его FPGA-клоном - SMK512), аппаратным эмулятором ПЗУ КР1801РЕ2Б, блоками расширения с процессорами ВМ2/ВМ3, и другими интересными материалами и работами.
Ведутся работы по отрисовке в 3D корпусов БК, МСТД, оригинальных клавиатуры, джойстика и мыши, но пока не удается найти их производство по приемлемой цене при малом тираже. Выполнено производство новодельных пленок для клавиатур БК-0011М.
Важным для возрождения БК и его сообщества является новый софт (игры и демо в особености), и они периодически появляются!
Удалось решить многие hard-задачи, но нет системных программистов, востребованных в проекте БК-0012, как минимум для тестирования. Требуется разработка полноценного Win32-компилятора Си в bin-файлы БК.
Релизован полноценный каталогизатор всего софта БК, с удобным интерфейсом. Осталось выполнить собственно большую задачу каталогизации.

Ждем ваших откликов, идей. Сообщайте о данном ресурсе всем, кто увлекался в прошлом БКшкой, присылайте их и свои e-mail для рассылки новостей из мира БК.

nimamov@mail.ru