| {% extends "base.html" %}
|
| <!-- settings.html, version 0.5.1 -->
|
| {% block title %}Настройки — MT5 Manager{% endblock %}
|
| {% block content %}
|
| <header class="page-heading">
|
| <div><h1>Настройки</h1><p class="page-description">Размещение терминалов, исходные файлы и торговые счета</p></div>
|
| </header>
|
| <div id="operation-message" role="status" aria-live="polite" class="notice is-hidden"></div>
|
| <div class="settings-layout">
|
| <section class="panel">
|
| <header class="panel-heading"><span class="section-icon"><svg class="icon"><use href="#icon-folder"/></svg></span><div><h2>Размещение терминалов</h2><p>Папки на сервере, где работает менеджер</p></div></header>
|
| <form id="settings-form">
|
| <div class="panel-body">
|
| <div class="form-grid">
|
| <label class="field" for="mt5-folder"><span>Базовая папка терминалов</span><input id="mt5-folder" name="mt5_folder" required></label>
|
| <label class="field" for="terminal-template"><span>Папка с исходными файлами</span><input id="terminal-template" name="terminal_template" required></label>
|
| <label class="field field-full" for="mt5-installation"><span>Папка установки MT5 для получения файлов</span><input id="mt5-installation" name="mt5_installation" placeholder="Необязательно, например C:\MT5\MetaTrader5.1"></label>
|
| <label class="field field-full" for="service-ex5"><span>Путь к ServiceStateWriter.ex5</span><input id="service-ex5" name="service_ex5" placeholder="Автоматически из загруженных файлов"></label>
|
| </div>
|
| <p class="field-help">Этот путь имеет приоритет перед загруженным EX5. Если оставить его пустым, менеджер использует загруженный сервис или подготовит его из исходного кода проекта.</p>
|
| <p class="field-help">Все экземпляры ищутся в подпапках базовой папки по своим именам. Изменение применяется ко всем экземплярам после сохранения настроек.</p>
|
| <details class="form-section advanced-settings">
|
| <summary><svg class="icon disclosure-icon"><use href="#icon-chevron"/></svg><span>Дополнительные параметры<span class="summary-hint">Ожидание и свободное место</span></span></summary>
|
| <div class="form-section-body form-grid">
|
| <label class="field" for="startup-timeout"><span>Время ожидания запуска, с</span><input id="startup-timeout" name="startup_timeout_sec" type="number" min="10" max="900" required></label>
|
| <label class="field" for="disk-warning"><span>Предупреждать при запасе меньше, МиБ</span><input id="disk-warning" name="disk_warning_mb" type="number" min="0" required></label>
|
| </div>
|
| </details>
|
| </div>
|
| <footer class="panel-footer"><span class="field-help">Папки на диске автоматически не перемещаются.</span><button class="button button-primary" type="submit">Сохранить настройки</button></footer>
|
| </form>
|
| </section>
|
| <section class="panel">
|
| <header class="panel-heading"><span class="section-icon"><svg class="icon"><use href="#icon-upload"/></svg></span><div><h2>Файлы для новых экземпляров</h2><p>Загрузите с компьютера или используйте файлы установки MT5</p></div></header>
|
| <div id="template-files" class="file-list"></div>
|
| <div class="panel-note"><i>terminal64.exe</i>, <i>MetaEditor64.exe</i> и <i>config/servers.dat</i> сначала берутся из «Папки с исходными файлами». Недостающие файлы берутся из указанной выше установки MT5. Если она не задана, автоматический поиск доступен только для проекта внутри <i>MQL5/Shared Projects</i>. При отдельном размещении проекта укажите установку MT5 или загрузите файлы здесь.</div>
|
| <div class="panel-note">Если <i>ServiceStateWriter.ex5</i> не загружен и путь к готовому EX5 не задан, при создании экземпляра менеджер скомпилирует <i>ServiceStateWriter.mq5</i> из исходного кода проекта через MetaEditor и скопирует результат в новый терминал. Уже собранный сервис используется повторно, если он не старее исходника.</div>
|
| <div class="panel-note">Перед загрузкой <i>servers.dat</i> найдите нужного брокера в локальном терминале. Обновлённые файлы будут использованы при создании новых экземпляров.</div>
|
| </section>
|
| </div>
|
| <section class="panel project-panel" aria-labelledby="project-heading">
|
| <header class="panel-heading"><span class="section-icon"><svg class="icon"><use href="#icon-upload"/></svg></span><div><h2 id="project-heading">Обновление проекта и сервиса</h2><p>Проверка Git, сборка и распространение по установленным терминалам</p></div></header>
|
| <div class="panel-body">
|
| <div class="project-update-grid">
|
| <div><h3>Репозиторий</h3><p id="project-git-status" class="field-help" role="status">Проверяем локальное состояние…</p><p id="project-git-help" class="field-help"></p></div>
|
| <div><h3>Сервис терминалов</h3><p id="project-service-status" class="field-help" role="status">Проверяем сборку…</p><p class="field-help">Собирается исходник текущего проекта, затем EX5 копируется во все экземпляры из конфигурации. Загруженный EX5 в этой операции не используется. Запущенные терминалы потребуется перезапустить.</p></div>
|
| </div>
|
| <p class="field-help">Развёртывание также восстанавливает запись автозапуска ServiceStateWriter в services.ini. Если её нужно изменить, сначала остановите терминал. Настройки других сервисов сохраняются.</p>
|
| <p id="project-feedback" class="notice is-hidden" role="status" aria-live="polite"></p>
|
| </div>
|
| <footer class="panel-footer project-actions"><button class="button button-secondary" id="project-check" type="button" disabled>Проверить обновления</button><button class="button button-primary is-hidden" id="project-update" type="button">Загрузить обновление</button><button class="button button-soft" id="project-deploy" type="button" disabled>Собрать и разложить сервис</button></footer>
|
| </section>
|
| <section class="account-section">
|
| <header class="section-heading"><div><h2>Торговые счета</h2><p>Подключение и сохранённые реквизиты каждого экземпляра</p></div><span id="account-count" class="subtle-count"></span></header>
|
| <div id="account-list" class="account-list"></div>
|
| </section>
|
| {% endblock %}
|
| {% block scripts %}<script src="/static/settings.js?v=0.3.3"></script>{% endblock %}
|