Exemple #1
0
        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;
        }