Взаимодействие веб-приложения (homeui) с конфигурационным файлом

Здравствуйте! В данный момент пытаюсь воплотить свои идеи в ПО контроллера, а точнее в homeui. Постараюсь кратко описать идею, дабы был контекст: хотел воплотить возможность сохранения набора топиков в разделе “История”, чтобы можно было потом какой-то набор переменных восстановить и не пришлось бы заново искать переменные из общего списка и добавлять их n-ое кол-во раз. Сохранение определенного набора топиков таким образом я прозвал “шаблоном”. У меня есть небольшой структурный макет, чтобы было понятно, что я хочу сделать со стороны самого UI чисто схематически (там еще находится поле для ввода имени шаблона, но забыл зафиксировать на макете):

Вопрос возникает по программной части, т.к я пытаюсь внести свои изменения и понять структуру, связи, API и т.д т.п, но являюсь начинающим разработчиком в данном направлении. Вопрос: каким образом Angular web-приложение считывает данные с файла /etc/wb-webui.conf и как я могу воспользоваться данным API?
Поясню, откуда взялся вопрос: если я правильно понимаю, данный конфигурационный файл хранит “настройки” пользователя, такие как дашборды и виджеты, и я хотел туда добавить ключ (json-поле), отвечающий за хранение описанных ранее шаблонов, но в целом не понимаю, каким образом веб-приложение может получать и записывать туда данные.
Хоть я и имею представление о том, как работает mqtt (pub/sub), постепенно разбираюсь в angularjs и понимаю, что существует wb-mqtt-confed, я не могу увидеть api, которое можно бы было использовать для взаимодействия с конфигурационным файлом в коде самого веб-приложения, скорее всего, вследствие моей неопытности и неполного понимания.
Если нужны какие-либо детали еще, то обязательно приведу

Приложение:

  1. За основу беру релиз wb-2504
  2. Приведу фрагмент html кода, который я написал в homeui/frontend/app/views/history.html, пока, собственно, без изменения controller’а (внутри angular) и подобного (нефинальная версия):
<!-- Templates html container -->
<div class="row">
    <div class="col-xs-12">
        <div class="form-group">
            <select 
                class="form-control"
                ng-model="$ctrl.selectedTemplate"
                ng-options="template.name for template in $ctrl.templates track by template.name"
                ng-change="$ctrl.applyTemplate()"
            >
                <option value="" translate>{{ 'history.labels.choose_template' }}</option>
            </select>
        </div>
        <button
            class="btn btn-primary"
            ng-click="$ctrl.applyTemplate()"
            ng-disabled="!$ctrl.selectedTemplate"
            translate
        >
            {{ 'history.buttons.applyTemplate' }}
        </button>
        <button
            class="btn btn-danger"
            ng-click="$ctrl.deleteTemplate()"
            ng-disabled="!$ctrl.selectedTemplate"
            translate
        >
            {{ 'history.buttons.deleteTemplate' }}
        </button>
        <button
            class="btn btn-warning"
            ng-click="$ctrl.updateTemplate()"
            ng-disabled="!$ctrl.selectedTemplate"
            translate
        >
            {{ 'history.buttons.updateTemplate' }}
        </button>
        <div class="form-group">
            <input
                type="text"
                class="form-control"
                ng-model="$ctrl.newTemplateName"
                placeholder="{{ 'history.labels.new_template' | translate }}"
            />
        </div>
        <button
            class="btn btn-success"
            ng-click="$ctrl.saveTemplate()"
            ng-disabled="!$ctrl.selectedControls.length || !$ctrl.newTemplateName"
            translate
        >
            {{ 'history.buttons.saveTemplate' }}
        </button>
    </div>
</div>

Добрый день!
Уточню этот вопрос у разработчиков и вернусь с ответом, как только получу информацию.

Добрый день!
Разработчики уточнили по вашему вопросу:

Параметры закодированы в URL, если скопировать ссылку,
то при повторном открытии всё отобразится так, как вы настроили ранее.

Спасибо!
Не совсем понимаю ответ, правда, мог бы я попросить вас привести объяснение более развернуто? Что за параметры?
Я попробую объяснить свой вопрос, а то, вероятно, выразился некорректно:
Например, пользователь нажимает на кнопку. Страница (view), на которой эта кнопка была задействована привязана к соответствующему js коду (controller), который должен обработать событие и выполнить какую-либо логику. Так вот в этой логике, хотелось бы модифицировать конфигурационный файл, однако я не вижу, как это может быть сделано с кода самого веб-приложения (js кода)

Вероятно, мне сильно помог бы небольшой пример здесь; может, разработчки могли бы привести фрагмент кода или подобное - было бы на руку

Добрый день!

Уточнил ваш вопрос у разработчиков, вот их ответ:

В коде Home UI за изменение файла /etc/wb-webui.conf отвечает сервис uiConfig. Он хранит свою копию этого файла в памяти.

При изменении этой копии срабатывает функция сохранения, которая через MQTT публикует JSON с настройками в топик, который потом wb-mqtt-confed обрабатывает и сохраняет на диск.

1 лайк

Спасибо большое! Разобрался
Если еще будут вопросы, задам

1 лайк