Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2021, 03:37
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Спортивная программа fitplotter (js)
Прошу высказаться физкультурников-программистов

https://github.com/karaul/fitplotter

По ссылке выше текст на английском, а по ссылкам ниже по-русски в свободной форме
Мотивация и начало работы
http://maraforum-2.ru/viewtopic.php?f=6&t=3477
Развитие проекта
http://maraforum-2.ru/viewtopic.php?...=3301&start=20

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2021, 07:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

karaul,
по программе высказаться не могу, но дело хорошее.
Ответить с цитированием
  #3 (permalink)  
Старый 17.02.2021, 19:05
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Похоже, что марафонцев среди js программистов столько же, сколько программистов среди бегунов. Мало.

Но вот Искандер Ядгаров - звезда Московского Марафона - он же программист.

Если никто по существу не выскажется, можно тешить себя тем, что среди марафонцев я самый знающий программист, а среди программистов - лучший марафонец.
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2021, 19:09
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Сообщение от рони Посмотреть сообщение
karaul,
по программе высказаться не могу, но дело хорошее.
у меня в программе есть связанные списки. Поля списка оси y зависят от того выбора списка оси х. Правда, такие вещи я писал еще в 1993, на ДОСовсом FoxPro
Ответить с цитированием
  #5 (permalink)  
Старый 24.02.2021, 00:01
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Никто не пишет, а хочется поговорить

(1) При входе на форум глюки при автоподстановке пароля из гугл-хромовского менеджера паролей. Пришлось запрашивать воостановление пароля. И так уже второй раз.

(2) Хочется получить совет по реализации программы. Делается для себя, вспомнить навык и выучить новое, чтобы другим было не стыдно показать и предложить для работы. Коммерческого интереса нет.

Подробно. В моем спортивном архиве данные о 10 лет занятий, 37500км, несколько тысяч файлов. Каждый файл - это трек пробежки с записью GPS координат, пульса, темпа бега, частота шагов (каденс) и прочее из спортивных часов. На рисунке во вложении пример того что в файлах

Я сделал форму для анализа данных записанных в файле, см. стартовое сообщение. Вот кстати, онлайн версия

https://karaul.github.io/fitplotter/

если интересно поиграть с онлайн-версией, FIT файл для анализа можно взять из https://github.com/karaul/fitplotter/tree/main/examples

файл проекта
https://github.com/karaul/fitplotter

Теперь мне хочется прикрутить к этому делу оболочку - таблицу из имен файлов и реперных данных из каждого файла (день, расстояние, средние и проч). Все файлы хранятся в одной директории на моей машине. Эта директория почти ежедневно пополняется. Мне хочется иметь таблицу вроде этой
https://www.runningahead.com/logs/4e...1eca8/workouts
Так чтобы щелкнув по строке таблицы я мог открыть из директории соответствующий файл и посмотреть график. Потом щелкнуть по другой строке и открыть на том же графике 2ой файл и сравнить. (Или на новом поле, но это неважно)

Непонятно как сделать таблицу. Прикручивать базу данных? Я сделал подобное на питоне, там у меня просто за каждый год csv файл, который регулярно дописывается, все работает. Теперь хочется на JS, но чтобы было не кустарно, как на питоне, а согласно имеющимся практикам, и практики заодно выучить. Предполагается что программа работать будет локально, если удастся потом сделать выход в внешний мир, как получилось с fitplotter, то совсем хорошо.

По моему разумению - это стандартная задача. Я нашел несколько описаний как это делается, например
https://closebrace.com/tutorials/201...ss-and-mongodb

Хочется знать - это правильное решение когда элементы хранения - файлы на диске? Мне кажется можно сделать проще.

Спасибо за обсуждение.

PS: В качестве благодарности могу надавать советов как правильно бегать.
Изображения:
Тип файла: jpg screenshot.JPG (158.0 Кб, 3 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 24.02.2021, 08:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

karaul,
на всякий случай, пример создания таблицы с возможностью сортировки
https://javascript.ru/forum/misc/777...tml#post509074
Ответить с цитированием
  #7 (permalink)  
Старый 24.02.2021, 08:49
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от karaul
Предполагается что программа работать будет локально
Сообщение от karaul
По моему разумению - это стандартная задача. Я нашел несколько описаний как это делается, например
https://closebrace.com/tutorials/201...ss-and-mongodb
А это уже не локально. Это уже сервер, хоть и установленный на том же компьютере.
Ставить для этого ноду с монго - стрельба из пушки по воробьям. Ну если только хочется поучиться работать с этим.

Но с другой стороны без сервера обойтись трудно. Javascript не может на автомате читать файлы с локального компьютера без явного указания пользователем файла, через стандартное диалоговое окно Open File.
Только если попробовать поизвращаться - подключать эти файлы через <script>, и делать их как JSON, или просто комментарий и потом парсить текстовое содержимое.
Ответить с цитированием
  #8 (permalink)  
Старый 24.02.2021, 14:20
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Спасибо за обсуждение

Изменил нечитаемый пароль выданную гуглем на более человеческое - гугл-хромовский менеджер начал работалть

рони спасибо за код, да именно это я и хочу. Надо просто добавить контроль для открытия карты и графиков. Как лучше: двойной щелчок по строке или отдельная колонка с кнопкой?

voraa спасибо за идею. Интересно, комментарий на тысячи строк. А есть пример такой реализации?

В качестве главной цели мне хочется чтобы программа прижилась в нашем спортивном клубе. Там не программисты, но про текстовый файл поймут. И возможность в т.ч. самому править файл заголовков (если что пошло не так), дописывая туда имя файла c свежей тренировкой выглядит просто и привлекательно. Человек понимает что делает и чувствует себя хозяином своей машины, программы на ней, и управляет своими данными. А необходимость шаманства с настройкой sqlite или mongodb и настройкой сервера людей оттолкнет. Можно сделать две версию, простую для людей, и правильную с БД (для себя - поучиться работать с БД).
Ответить с цитированием
  #9 (permalink)  
Старый 24.02.2021, 15:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от karaul
или отдельная колонка с кнопкой?
Ответить с цитированием
  #10 (permalink)  
Старый 24.02.2021, 15:57
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от karaul
А есть пример такой реализации?
Ну с комментариями это я поторопился.
Это прокатывало, когда произвольные данные надо было помещать в
<script>
/*
Тут произвольные данные
*/
</script>

Но для внешних файлов набросал такой примерчик
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" lang="ru">
  <meta name="viewport" content="width=device-width, initial-scale=1.0" >
  <title> LOAD DATA </title>
</head>
<style>
#out {
	position:relative;
	width: 300px;
	height:400px;
	overflow-y:auto;
	border: 1px red solid;
}
</style>
<body >
<pre id=out></pre>
<button id=rd1>read1</button>
<button id=rd2>read2</button>
<button id=rd3>read3</button>

<script>
var data;
const read = (fn) => {
	const uf = './data/'+ fn;
	const sf = document.createElement('script');
	return new Promise (res => {
		sf.onload = () => {
			sf.remove();
			res(data)
		}
		sf.src = uf;
		document.head.append(sf)
	})
}
document.getElementById('rd1').addEventListener('click', async () => {
	const text = await read('file1.dat')
// Тут какая то обработка. Пока так
	document.getElementById('out').textContent += text;
})
document.getElementById('rd2').addEventListener('click', async () => {
	const text = await read('file2.dat')
// Тут какая то обработка. Пока так
	document.getElementById('out').textContent += text;
})
document.getElementById('rd3').addEventListener('click', async () => {
	const text = await read('file3.dat')
// Тут какая то обработка. Пока так
	document.getElementById('out').textContent += text;
})
</script>
</body>
</html>


В директории с этим файлом создайте поддирескторию data
И в нее три файла
file1.dat
data=`
Это файл file1.dat
12345
67890
09876
54321
`;


file2.dat
data=`
Это файл file2.dat
qwert
yuiop
asdfg
hjklz
`;


file3.dat
data=`
Это файл file3.dat
йцуке
нгшщзх
фывап
ролджэ
`;


В этих файлах между первой строкой
data=`
и последней
`;
Могут размещаться произвольные текстовые данные, которые можно получить и потом как то обрабатывать

Последний раз редактировалось voraa, 24.02.2021 в 18:09.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу JS разработчиков в лесу Kenjuy27 Работа 0 18.07.2018 09:06
Диалог между HTML и внешним JS в контексте расширения GoogleChrome ev1lart Events/DOM/Window 0 26.04.2017 19:25
option и время Step48_rus jQuery 38 03.07.2016 11:33
JS <-> Server Js. Severtain Общие вопросы Javascript 1 05.11.2011 15:36
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28