GyverPortal

Barmer

✩✩✩✩✩✩✩
3 Ноя 2022
4
0
Кстати, портал без интернета будет работать?
Судя по исходнику из jquery нет. А можно его на внутренней файловой системе разместить?
Если устройство не в интернете, то библиотека....

void JQ_SUPPORT() {
SEND(F("<script src='https://code.jquery.com/jquery-3.6.1.min.js'></script>\n"));
}

 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
без интернета будет работать?
Судя по исходнику из jquery
Почему же, будет. См документацию. Jquery нужен исключительно для механизма jquery update, который в целом и не нужен, просто он удобнее обычного update. Если jq update нужен без подключения к интернету - библиотека кладется в spiffs и всё замечательно работает локально. Причем файл кешируется и не скачивается при каждой загрузке страницы.

Странно, что при этом страница просто уходит в перезагрузку и мониторе порта пусто
Абсолютно ничего странного. Отправка файла это отправка формы, она провоцирует переход по урл (в данной реализации - перезарузку страницы). В монитор порта в примере auto upload приходит результат успешной загрузки файла. Но так как есп не может создать пустой файл по указанному пути - загрузка даже не начинается.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
Ребята подтверждают баг - littlefs на esp32 не умеет создавать файлы по указанному пути, который содержит несуществующие каталоги. Пока не очень понятно что с этим делать, будет время - буду разбираться. На 8266 FOLDER_UPLOAD работает как часы
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@AlexGyver,

Вообще странно, в тесте библиотеки LittleFS как раз создается каталог, со вложенными каталогами и все отрабатывает.
И дефайн по использованию совместимости со SPIFFS
C++:
    writeFile2(LittleFS, "/new1/new2/new3/hello3.txt", "Hello3");

// SPIFFS-like write and delete file, better use #define CONFIG_LITTLEFS_SPIFFS_COMPAT 1
void writeFile2(fs::FS &fs, const char * path, const char * message){
    if(!fs.exists(path)){
        if (strchr(path, '/')) {
            Serial.printf("Create missing folders of: %s\r\n", path);
            char *pathStr = strdup(path);
            if (pathStr) {
                char *ptr = strchr(pathStr, '/');
                while (ptr) {
                    *ptr = 0;
                    fs.mkdir(pathStr);
                    *ptr = '/';
                    ptr = strchr(ptr+1, '/');
                }
            }
            free(pathStr);
        }
    }

    Serial.printf("Writing file to: %s\r\n", path);
    File file = fs.open(path, FILE_WRITE);
    if(!file){
        Serial.println("- failed to open file for writing");
        return;
    }
    if(file.print(message)){
        Serial.println("- file written");
    } else {
        Serial.println("- write failed");
    }
    file.close();
}


Победил проблему форматирования хранилища.
Проблема была в следующем:
1. Старая версия ESP32 Sketch Data Uploader. Обновил до последней, в которой при загрузке можно выбрать тип файлового хранилища.
Если кому надо, то ссылка на корректный файл расширения
2. В ядре ESP32 версии 2.0.5 отсутствовали файлы mkfatfs.exe и mklittlefs.exe
Скачать можно здесь: https://github.com/lorol/arduino-esp32fs-plugin/releases/tag/2.0.2
Инструкция по установке здесь

После обновления и копирования файлов все заработало, хранилище монтируется без дополнительного форматирования
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
Я вчера очистил Флэш, залил образ литлфс через дата аплоадер, и оно всё равно не работало. Получается folder upload работает, правильно понял?
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
Получается folder upload работает, правильно понял?
Нет, я победил то, что у меня при первой заливке через дата аплоадер не видно было файлы в хранилище.
Загрузка папками не работает.
Как и писал ранее, наверное надо посмотреть в сторону примера библиотеки LittleFS_test процедура writeFile2
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
У меня принципиально не создаются файлы так, как выше в writeFile2. Именно поэтому и не работает folder upload - файл не создаётся, if (file) не проходит

В общем для esp32 нужно вручную создавать вложенные папки, как в примере показано. Реализовал в библиотеке, с версии 3.3 folder upload будет работать
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@AlexGyver,
Спасибо отлично.

Еще заметил следующее:
Логи - автоматический работает хорошо.
Если создавать собственные окна, то послать туда данные можно только в loop()
Почему-то если делаю, например, в action() по некоему событию, не работает
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@AlexGyver,

Да, событие отрабатывает.
Сейчас еще раз проверю и если подтвердится, пришлю код
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
Реализовал замену родной стрелки списка на красивую.
Если кому надо, расскажу как
1667823917936.png
 
  • Лойс +1
Реакции: pingemall

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
Такое надо сразу в issue, и сразу кодом)
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
@gorlanovmax, добавил яваскрипт подмены стрелки в селекте, сомневаюсь что css может с этим совладать, возможно надо будет в ишью предложить некий алгоритм для создания "скинов", то есть файлы с набором css, скриптами подмены одного на другое и т.д.
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@AlexGyver,

Это не совсем типовое решение.
Требует обязательного использования css в хранилище.
Если надо в issuу, добавлю.

@DAK,
никакого скрипта, только css и png со стрелкой.

На самом деле все просто

css
C++:
#blockBack select {
  /*background: #13161a;*/
  background: url("/gp_data/l_cur.png") 98% / 5% no-repeat #13161a;
}

select {
  border-radius: 8px;
  padding: 3px 10px;
  color: #bbb;
  border: none;
  background-color: #2a2d35;
  vertical-align: middle;
  position: relative;
  margin: 6px 4px;
  font-size: 20px;
  height: 40px;
  cursor: pointer;
  width: 90%;
  max-width: 560px;
  /*меняем стрелку на кастом*/
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  /*меняем стрелку на кастом*/
}

select::-ms-expand {
  display: none; /* удалите стрелку по умолчанию в IE 10 и 11 */
}
и в папку gp_data хранилища положить файл со стрелкой l_cur.png
в архиве файл в Illustrator, если кому захочется цвет поменять
 

Вложения

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
как то некрасиво, стрелку можно и символом взять, необязательно её такую голубенькую делать. Или svg-шкой хотя бы заинлайнить
 

Роман_Л

✩✩✩✩✩✩✩
23 Фев 2021
5
0
Добрый вечер, правильно понял, что для графиков AJAX_PLOT свои имена/labels для осей недоступны?
C++:
void AJAX_PLOT(const String& name, int axes, int xamount = 20, int prd = 1000, int height = 400, bool local = 0)
void PLOT(const String& id, const char** labels, int16_t vals[ax][am], int dec = 0, int height = 400)
В 3.3 не планируется?
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@AlexGyver,

Согласен, но символами она получается маленькой.
У меня была как раз задача сделать ее более заметной.
Цвет у меня подобран исходя из общей темы страницы.
Именно поэтому приложил исходник.
Формат иконки вторичен. Из иллюстратора можно в любом формате выгрузить
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@AlexGyver,

все верно, но мне как перфекционисту, хотелось стрелку в стиль дизайна портала.
В символах такую найти не удалось
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@AlexGyver,
У меня цвет изменен на голубой
Именно формой в стиль с закругленными плашками и волями ввода
 

Kurya

✩✩✩✩✩✩✩
8 Ноя 2022
1
0
Доброго времени суток.

Обновил библиотеку с 3.1.0 до 3.3.0. Ни один пример не компилируется с новой версией. На старой все работало.

На всех примерах выдает ошибку:
In file included from C:\Users\SL\Documents\Arduino\libraries\GyverPortal\src/CustomOTA.h:4:0,
from C:\Users\SL\Documents\Arduino\libraries\GyverPortal\src/portal.h:16,
from C:\Users\SL\Documents\Arduino\libraries\GyverPortal\src/GyverPortal.h:65,
from C:\Users\SL\Documents\Arduino\libraries\GyverPortal\examples\demos\demoColor\demoColor.ino:6:
C:\Users\SL\Documents\Arduino\libraries\GyverPortal\src/builder.h: In member function 'void Builder::_showFiles(fs::FS*, const String&, uint8_t)':
C:\Users\SL\Documents\Arduino\libraries\GyverPortal\src/builder.h:922:49: error: 'class fs::File' has no member named 'path'
if (levels) _showFiles(fs, file.path(), levels - 1);
^
exit status 1
Ошибка компиляции для платы ESP32 Dev Module.

Пробовал и установку на "чистую", предварительно удалив библиотеку. Ошибка та же.