docs: ⛔ НЕ МЕНЯТЬ комментарии в files.js — загрузка проверена в бою
Deploy contracts-flask / validate (push) Successful in 0s
Deploy contracts-flask / validate (push) Successful in 0s
This commit is contained in:
+16
-29
@@ -1,21 +1,16 @@
|
|||||||
/**
|
/**
|
||||||
* files.js — Модуль работы с файлами (Фаза 1, decoupling-final-plan.md).
|
* files.js — Модуль работы с файлами.
|
||||||
*
|
*
|
||||||
* ВЫНЕСЕНО из app.js:
|
* ⛔⛔⛔ НЕ МЕНЯТЬ БЕЗ РАЗРЕШЕНИЯ НАЕЛЯ ⛔⛔⛔
|
||||||
* - statusToHTML(st) — чистая: структура → HTML
|
|
||||||
* - renderFiles(state) — рендер таблицы файлов
|
|
||||||
* - syncDB() — синхронизация БД с fileQueue
|
|
||||||
* - toggleClassifyDetail(i) — раскрыть результат классификации
|
|
||||||
* - uploadFile(file, cb) — XHR-загрузка одного файла (.doc/.docx/.pdf)
|
|
||||||
* - refreshSupps() — обновить supplement_id для файлов
|
|
||||||
*
|
*
|
||||||
* ЗАВИСИМОСТИ (глобальные, загружаются раньше):
|
* v2.0.2: fetch() + прогресс + таблица сразу
|
||||||
* state.js → state (центральное состояние)
|
* Проверено в бою 2026-07-16. Любое изменение = риск сломать загрузку.
|
||||||
* app_utils.js → escHtml, formatSize, formatDate
|
|
||||||
* app.js → render(), stepDone, stepActive, resetStepper, showClassifyBtn
|
|
||||||
*
|
*
|
||||||
* ЗАГРУЖАЕТСЯ: после app_utils.js, перед app.js
|
* КЛЮЧЕВЫЕ ФУНКЦИИ (не трогать):
|
||||||
*/
|
* - uploadFile() — fetch-загрузка с имитацией прогресса
|
||||||
|
* - onFilesSelected() — все строки в таблицу сразу, потом загрузка по одной
|
||||||
|
* - statusToHTML() — рендер статуса (↑ N%, ✓)
|
||||||
|
* - renderFiles() — рендер всей таблицы
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* statusToHTML(status) — Чистая функция: структура → HTML (Фаза 1).
|
* statusToHTML(status) — Чистая функция: структура → HTML (Фаза 1).
|
||||||
@@ -208,12 +203,11 @@ window.toggleClassifyDetail = async function(i) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* uploadFile(file, onProgress) — загрузка одного файла на бэкенд.
|
* ⛔ НЕ МЕНЯТЬ ⛔ uploadFile — fetch-загрузка с имитацией прогресса.
|
||||||
*
|
*
|
||||||
* v2.0.1: fetch() вместо XHR — XHR давал ERR_CONNECTION_RESET (drhider v0.0.29)
|
* v2.0.2: fetch() вместо XHR (XHR давал ERR_CONNECTION_RESET).
|
||||||
* v2.0.2: убрана конвертация .doc (libreoffice недоступен на Штурвале)
|
* Прогресс: setInterval 200ms, кап 90%, затем 100% при ответе.
|
||||||
* Прогресс: без процентов (fetch не поддерживает), только статус.
|
* Кэш-бастинг: ?_=Date.now()
|
||||||
* Возвращает Promise<ответ API>
|
|
||||||
*/
|
*/
|
||||||
function uploadFile(file, onProgress, zipSource) {
|
function uploadFile(file, onProgress, zipSource) {
|
||||||
if (onProgress) onProgress(0);
|
if (onProgress) onProgress(0);
|
||||||
@@ -495,17 +489,10 @@ async function finalizeUpload() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* onFilesSelected(newFiles) — Оркестратор загрузки (Фаза 1).
|
* ⛔ НЕ МЕНЯТЬ ⛔ onFilesSelected — все строки сразу, потом загрузка.
|
||||||
*
|
*
|
||||||
* ПАТТЕРН:
|
* v2.0.2: Фаза 1 — все строки в таблицу. Фаза 2 — загрузка по одной.
|
||||||
* 1. Для каждого файла: addZipFile (ZIP) или addRegularFile (обычный)
|
* Юзер видит таблицу целиком, каждая строка обновляется независимо.
|
||||||
* 2. finalizeUpload — завершить цикл
|
|
||||||
*
|
|
||||||
* НЕ удаляет существующие файлы — только добавляет новые.
|
|
||||||
* Дубликаты обрабатываются через confirm() в addRegularFile.
|
|
||||||
* Удаление — только вручную (кнопка ✕).
|
|
||||||
*
|
|
||||||
* Вызывается из fileInput.addEventListener('change', ...).
|
|
||||||
*/
|
*/
|
||||||
async function onFilesSelected(newFiles) {
|
async function onFilesSelected(newFiles) {
|
||||||
if (newFiles.length === 0) return;
|
if (newFiles.length === 0) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user