private void OnPressEditBtn(VisualElement dayElement) { if (info == null) { // Can be null the first time info = new TimeRecorderInfo(); } var editContainer = dayElement.Q <VisualElement>(DayContainerTemplateNames.EDIT_DAY_CONTAINER); var editBtn = dayElement.Q <Button>(DayContainerTemplateNames.EDIT_BTN); var labelHours = dayElement.Q <Label>(DayContainerTemplateNames.LABEL_HOURS); var textField = dayElement.Q <TextField>(DayContainerTemplateNames.INPUT_EDIT_MINUTES); var date = TimeRecorderExtras.GetDateByDayNameFormat(dayElement.name); var dateTime = new DateTime(date.year, date.month, date.day); var dateTimeInfo = info.VerifyByDatetime(dateTime); // User is editing this day? if (currentDayEditing == dayElement) // If true this btn is working as save // ◘◘◘◘◘ On press Save ◘◘◘◘◘ { var totalDevLabel = rootVisualElement.Q <Label>(CalendarContainerTemplateNames.LABEL_TOTAL_DEV_TIME); editBtn.text = TimeRecorderExtras.EDIT; currentDayEditing = null; editContainer.AddToClassList("no-display-element"); labelHours.RemoveFromClassList("no-display-element"); ClampDayMinutesValue(textField.value, textField.value, out var time); // ⚠⚠⚠⚠⚠ Transform input minutes to seconds ⚠⚠⚠⚠⚠ time = time * SECONDS_PER_MINUTE; info.totalRecordedTime = info.totalRecordedTime - dateTimeInfo.dayInfo.timeInSeconds + time; // Update total time dateTimeInfo.dayInfo.timeInSeconds = time; // Update day time labelHours.text = GetLabel(time); totalDevLabel.text = GetLabel(info.totalRecordedTime); TimeRecorder.SaveTimeRecorded(info); TimeRecorder.ReCalculateNextSave(); Debug.Log($"<color=green>Time of the day {dayElement.name} updated</color>"); return; } if (currentDayEditing != null) { // Hide previous editing button currentDayEditing.Q <Label>(DayContainerTemplateNames.LABEL_HOURS).RemoveFromClassList("no-display-element"); ChangeDayEditState(currentDayEditing, false); } // Set the info of selected date textField.value = (dateTimeInfo.dayInfo.timeInSeconds / SECONDS_PER_MINUTE).ToString(); editContainer.RemoveFromClassList("no-display-element"); labelHours.AddToClassList("no-display-element"); currentDayEditing = dayElement; editBtn.text = TimeRecorderExtras.SAVE; }