---
# System prepended metadata

title: NOC Home Page

---

# NOC Home Page

На настоящий момент стартовая страница NOC содержит небольшой статический текст и несколько ссылок.

![image](https://hackmd.io/_uploads/BJgsv-Y-0.png)

На первый взгляд она кажется бедноватой и не несет полезной нагрузки.

## Prior Art

Во многих аналогичных системах первая страница оформляется как конфигурируемый дашборд.

![image](https://hackmd.io/_uploads/SkL4Y-FWA.png)

В таком виде стартовая страниица может использоваться для быстрой навигации и дает общее представление о системе.

## Home Dashboard

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

Приложение main.welcome переделываеся в main.home.

Дашборд представляет собой непересекающиеся widget'ы фиксированной ширины. Доступные widget'ы определяются правами пользователя.

Типы widget'ов:

* Text - Содержит обычный текст.
* Favorites - показывает пользовательские закладки и по клику открывает необходимые табы
* Summary - таблица с колонками `описание` - `количество`. Показывает, сколько объектов какого вида есть в системе (видимых пользователем). По клику на строку запускает соответсвующее приложениие.

После запуска приложение home делает GET-запрос к /main/home/dashboard/ и получает json

``` json
{
    "widgets": [<widget1>, ..., <widgetN>]
}
```

где `<widget>` - конфигурация widget'а:

``` json
{
    type: "<widget type>",
    title: "<заголовок>",
    data: {
        <специфичные данные для widget>
    }
}
```

### Text

``` json
{
    type: "text",
    title: "...",
    data: {
        text: "Lorem ipsum"
    }
}
```

### Favorites
``` json
{
    type: "favorites",
    title: "...",
    data: {
        items: [
            {
                title: "Addresses",
                link: "...",
                items: [
                    {
                        text: "...",
                        link: "...",
                    }, ...
                ]
            }, ...
        ]
    }
}
```
Отображает группы в виде горизонтальных заголовков (с открытием приложения, заданного link по клику)

Поп заголовком идут элементы отображаемые как `text`, по клику открывается приложениие из `link`

### Summary

``` json
{
    type: "summary",
    title: "...."
    data: {
        items: [
            {
                text: "...",
                value: "...",
                link: "..."
            }
        ]
    }
}
```

Отображается в виде таблицы, слева `text`, справа `value`. По клику открывает по ссылке нужное приложение.