Ну да: мой календарь выглядит ни разу не информативным( Но у меня и планируемого времени пока не продумано)

Всем привет! Наконец-то могу анонсировать новый важный функционал - календарь задач. До этого уже были реализованы Проекты, Задачи и Таймеры выполнения. Про Таймеры я как раз писал недавно. Но все то, что было ранее, это касалось аналитики "Что сделано", то есть годилось только для анализа "Сколько я потратил время на те или иные задачи". Но важна и другая аналитика: "Что планируется сделать". То есть нужна возможность запланировать выполнение отдельных задач на определенное время (к примеру, на ближайшие 3 дня) и потом выполнять задачи уже по расписанию и фиксировать реальное время выполнения. То есть в задачах 4 временных метки: Когда планируется начать, Когда планируется закончить, Когда фактически начал выполнение и Когда фактически закончил выполнение. Вот как раз для этого и был внедрен Календарь. В нем проще заводить задачи на определенное время (Зашел в проект, перешел в календарь, кликнул нужный слот, ввел название задачи, сохранил, растянул мышкой задачу в календаре, чтобы задать нужное планируемое время выполнения). А когда вы кликаете Начать выполнение, время фактического старта задачи автоматически выставляется. И когда жмете кнопку Отметить выполненной, так же автоматически проставляется фактическое время выполнения задачи. Таким образом у нас есть все 4 даты для анализа эффективности. К сожалению, пока в календаре выводятся только планируемые даты выполнения, но не выводятся фактические даты. Но я придумаю как это получше визуализировать, поправлю. Тем не менее, в ближайшие дни выкачу интерфейс сводной аналитики по эффективности работы, уже можно будет примерно оценивать какие задачи были выполнены не очень эффективно. Почему так важна такая аналитика? Не знаю как у кого, но у меня очень плотный график. И очень часто получается так, что много времени тратится на те задачи и проекты, которые совсем не выгодны. И нужен инструмент для того, чтобы оценивать фактически трудозатраты, а не субъективно воспринимать. Плюс к этому планирование на ближайшие дни позволяет сосредоточиться именно на важных вещах, а менее важные оставить на задний план. А при наличии нового предложения на сотрудничество можно было более оперативно оценить свою текущую занятость и готовность взяться за новый проект. P.S. Только не создавайте задачи на несколько дней. Лучше создавайте задачи без планируемого срока выполнения и в них создавайте более мелкие и понятные подзадачи со сроком выполнения не более несколько часов (Пока что эта функция доступна только на странице списка задач в конкретном проекте, но скоро и в календаре появится). Просто аналитической пользы с задач на месяц нет никакого реального проку. Я просто позже добавлю функцию повторяющихся задач. А так только календарь весь замусорен и все, и оценить планируемое и фактическое время невозможно, то есть нет реальной картины на что вы сколько планировали времени потратить и сколько реально потратили.

Дима, нашел еще одну заразу: mlocate Вот здесь пишут как чистить: https://askubuntu.com/a/117213 То есть сначала удаляем старые файлы баз Затем на всякий случай выполняем крон-службу (она может выполняться долго, запусти и оставь где-нибудь в фоне, пусть работает). UPD: Кстати, чтобы сразу оценить есть ли смысл чистить, можно выполнить это: Найдет все файлы по маске и покажет их список с подсчетом занятого на диске места.

Где же ты дичи-то этой начитался? Где ты этому научился? Во-первых, у тебя Spalte вообще отсутствует в исходных данных. У тебя data имеет тип Array<{test: number}>. Где ты там Spalte нашел, вообще не ясно. Во-вторых, нафига объект приводить к строке, чтобы его обратно распарсить в объект и пытаться из него что-то получить? Даже если ты пытался на самом деле получить не Spalte, а тест, то твой код превращается вот в такое: Все. Никаких stringify и parse. В-третьих, какое это отношение имеет к объекту timer? Ты так и не ответил на главный вопрос: что является сутью затраченного времени и как его вычислить? Отвечаю: затраченное время - это разнича между стартом таймера и остановом его. То есть дельта Конечного времени и Начального. Это, наверно, первые классы средней школы. Так вот, что в объекте таймера является начальным и конечным временем? Отвечаю: - Начальное время - свойство createdAt - Конечное время - свойство stopedAt То есть для того, чтобы рассчитать затраченное время, достаточно было вычесть большее из меньшего, то есть Все! Вот тебе разница в миллисекундах (то есть в тысячных секунды). Единственное, вот если ты так прям напишешь, то TS ругнется на то, что stopedAt может отсутствовать. Это и логично. Ведь текущий таймер, пока не остановлен, не имеет значения stopedAt. Оно появится когда его остановят. То есть конечный подсчет будет выглядеть так: То есть если время останова отсутствует, указываем текущее время актуальное, таким образом даже в текущем таймере мы посчитаем сколько времени затрачено конкретно на текущий момент. Все. И diff будет иметь тип number, и его можно присваивать к totalTime. Что здесь не ясно? Как можно было усложнить такую простую задачу? А еще я в задаче указывал на пример подсчета: https://github.com/freecode-academy/freecode.academy/blob/e8dc066e7a539e87d1a87e72ada36f059a32d291/src/pages/Office/Timers/View/Timer/index.tsx#L13-L15 Хоть здесь и используются moment(), суть от этого не меняется. Все равно высчитывается разность этих двух полей.

Рука-лицо... Парсят строки, к примеру... ОК, выражаясь твоими словами, как ты планируешь распарсить объект timer, чтобы получить тип number. Напиши здесь кодом. Это в одну строчку вполне уложиться можно.

Если все в нем уже есть, как я и предполагал изначально, нужно просто его распарсить, чтобы получить тип number и присвоить totalTime.

Получаем что-то, чтобы получить что-то, чтобы потом запросить что-то и там еще запросим что-то... Не слишком ли сложно? Опять ты в какую-то магию отправился. Еще раз: как из текущего объекта timer вычислить затраченное время? Уточняю: ничего со стороны запрашивать не надо, никакие запросы выполнять не надо, никакие левые функции выполнять не надо. Все необходимое у нас уже есть в текущем объекте таймер. Так как вычислить "затраченное время"?