feat(todo): Today laid out as a calendar, planned from its Plan by dragging, as Todoist's desktop Today (ADR 0033, D30)
The developer asked for Todoist's desktop Today planning: a day of hours and a Plan beside it, tasks dragged from it onto an hour. Today gets a Display, its layout alone (List or Calendar), kept in the person's sealed settings row as Upcoming's (`TodayView`, the payload's `today`, schema still 1). Its Calendar is one day of `HourGrid`; *Plan: n* in its app bar shows or hides the Plan (`PlanPanel`): Overdue with Reschedule, To plan (today's without a time) and Time-blocked (today's with one), each folding with its count, narrowed for the session by *All projects*' Filter by project (a search and a box a project, a sub-project with its parents' path). A row dropped on an hour is moved to today at that time, its duration kept; a block dropped on the Plan loses its time; both undone from the snack bar, through `moveTask`. From a medium width of Today's own on the Plan stands beside the day, shown or hidden as remembered; on a phone it is a sheet over the day's foot (the developer's choice, over the Plan on wide windows alone and over a strip above the day), part of the screen rather than a modal route, so that the day behind it takes the drop, and it lowers to its heading while one of its rows is held. Whats-New: Today's Display offers a Calendar layout: today's hours, with a Plan of what is overdue, to plan and time-blocked, whose tasks you drag onto an hour. Whats-New-De: Die Anzeige von Heute bietet das Layout Kalender: die Stunden des Tages, mit einem Plan aus Überfälligem, Zu planen und Eingeplant, dessen Aufgaben du auf eine Stunde ziehst. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
c53ce30ff5
commit
574b379f11
5 changed files with 1775 additions and 196 deletions
|
|
@ -257,5 +257,18 @@
|
|||
"monthMore": "{count} weitere",
|
||||
"dayHeadingPattern": "EEEE, d. MMM",
|
||||
"overdueHide": "Überfälliges ausblenden",
|
||||
"overdueShow": "Überfälliges einblenden"
|
||||
"overdueShow": "Überfälliges einblenden",
|
||||
"planButton": "Plan: {count}",
|
||||
"planTitle": "Plan",
|
||||
"planShow": "Plan einblenden",
|
||||
"planHide": "Plan ausblenden",
|
||||
"planToPlan": "Zu planen",
|
||||
"planTimeBlocked": "Eingeplant",
|
||||
"planEmpty": "Nichts zu planen",
|
||||
"planDropHint": "Hier ablegen, um die Uhrzeit zu entfernen",
|
||||
"planGroupHide": "{group} ausblenden",
|
||||
"planGroupShow": "{group} einblenden",
|
||||
"planAllProjects": "Alle Projekte",
|
||||
"planProjectsCount": "{count, plural, =1{1 Projekt} other{{count} Projekte}}",
|
||||
"planFilterTitle": "Nach Projekt filtern"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -826,5 +826,77 @@
|
|||
"description": "intl's DateFormat pattern of a day's heading in Today and Upcoming, as Todoist's (\"Tuesday, 3 Nov\"): EEEE the weekday, d the day, MMM the short month."
|
||||
},
|
||||
"overdueHide": "Hide what is overdue",
|
||||
"overdueShow": "Show what is overdue"
|
||||
"overdueShow": "Show what is overdue",
|
||||
"planButton": "Plan: {count}",
|
||||
"@planButton": {
|
||||
"description": "Today's app bar in its Calendar layout (ADR 0033, D30, as Todoist's): shows or hides the Plan, counting the tasks it holds.",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"planTitle": "Plan",
|
||||
"@planTitle": {
|
||||
"description": "Today's Plan beside or below its day of hours (ADR 0033, D30)."
|
||||
},
|
||||
"planShow": "Show the Plan",
|
||||
"@planShow": {
|
||||
"description": "Tooltip of Today's Plan button while the Plan is hidden (ADR 0033, D30)."
|
||||
},
|
||||
"planHide": "Hide the Plan",
|
||||
"@planHide": {
|
||||
"description": "Tooltip of Today's Plan button and the Plan's close button while it shows (ADR 0033, D30)."
|
||||
},
|
||||
"planToPlan": "To plan",
|
||||
"@planToPlan": {
|
||||
"description": "Today's Plan (ADR 0033, D30): the group of today's tasks without a time, to be given one."
|
||||
},
|
||||
"planTimeBlocked": "Time-blocked",
|
||||
"@planTimeBlocked": {
|
||||
"description": "Today's Plan (ADR 0033, D30, Todoist's word): the group of today's tasks with a time."
|
||||
},
|
||||
"planEmpty": "Nothing to plan",
|
||||
"@planEmpty": {
|
||||
"description": "Today's Plan (ADR 0033, D30) while it holds no task."
|
||||
},
|
||||
"planDropHint": "Drop here to take its time away",
|
||||
"@planDropHint": {
|
||||
"description": "Today's Plan (ADR 0033, D30) while a block of the day is dragged over it."
|
||||
},
|
||||
"planGroupHide": "Hide {group}",
|
||||
"@planGroupHide": {
|
||||
"description": "Tooltip folding a group of Today's Plan (ADR 0033, D30).",
|
||||
"placeholders": {
|
||||
"group": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"planGroupShow": "Show {group}",
|
||||
"@planGroupShow": {
|
||||
"description": "Tooltip unfolding a group of Today's Plan (ADR 0033, D30).",
|
||||
"placeholders": {
|
||||
"group": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"planAllProjects": "All projects",
|
||||
"@planAllProjects": {
|
||||
"description": "Today's Plan's project filter (ADR 0033, D30) while it keeps every project, and the button putting it back."
|
||||
},
|
||||
"planProjectsCount": "{count, plural, =1{1 project} other{{count} projects}}",
|
||||
"@planProjectsCount": {
|
||||
"description": "Today's Plan's project filter (ADR 0033, D30) while it keeps several projects.",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"planFilterTitle": "Filter by project",
|
||||
"@planFilterTitle": {
|
||||
"description": "Today's Plan's project filter (ADR 0033, D30): its search field's hint and its name."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1647,6 +1647,84 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Show what is overdue'**
|
||||
String get overdueShow;
|
||||
|
||||
/// Today's app bar in its Calendar layout (ADR 0033, D30, as Todoist's): shows or hides the Plan, counting the tasks it holds.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Plan: {count}'**
|
||||
String planButton(int count);
|
||||
|
||||
/// Today's Plan beside or below its day of hours (ADR 0033, D30).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Plan'**
|
||||
String get planTitle;
|
||||
|
||||
/// Tooltip of Today's Plan button while the Plan is hidden (ADR 0033, D30).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show the Plan'**
|
||||
String get planShow;
|
||||
|
||||
/// Tooltip of Today's Plan button and the Plan's close button while it shows (ADR 0033, D30).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hide the Plan'**
|
||||
String get planHide;
|
||||
|
||||
/// Today's Plan (ADR 0033, D30): the group of today's tasks without a time, to be given one.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'To plan'**
|
||||
String get planToPlan;
|
||||
|
||||
/// Today's Plan (ADR 0033, D30, Todoist's word): the group of today's tasks with a time.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Time-blocked'**
|
||||
String get planTimeBlocked;
|
||||
|
||||
/// Today's Plan (ADR 0033, D30) while it holds no task.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nothing to plan'**
|
||||
String get planEmpty;
|
||||
|
||||
/// Today's Plan (ADR 0033, D30) while a block of the day is dragged over it.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Drop here to take its time away'**
|
||||
String get planDropHint;
|
||||
|
||||
/// Tooltip folding a group of Today's Plan (ADR 0033, D30).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hide {group}'**
|
||||
String planGroupHide(String group);
|
||||
|
||||
/// Tooltip unfolding a group of Today's Plan (ADR 0033, D30).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show {group}'**
|
||||
String planGroupShow(String group);
|
||||
|
||||
/// Today's Plan's project filter (ADR 0033, D30) while it keeps every project, and the button putting it back.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'All projects'**
|
||||
String get planAllProjects;
|
||||
|
||||
/// Today's Plan's project filter (ADR 0033, D30) while it keeps several projects.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 project} other{{count} projects}}'**
|
||||
String planProjectsCount(int count);
|
||||
|
||||
/// Today's Plan's project filter (ADR 0033, D30): its search field's hint and its name.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Filter by project'**
|
||||
String get planFilterTitle;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
|
|
@ -1019,4 +1019,57 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String get overdueShow => 'Überfälliges einblenden';
|
||||
|
||||
@override
|
||||
String planButton(int count) {
|
||||
return 'Plan: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get planTitle => 'Plan';
|
||||
|
||||
@override
|
||||
String get planShow => 'Plan einblenden';
|
||||
|
||||
@override
|
||||
String get planHide => 'Plan ausblenden';
|
||||
|
||||
@override
|
||||
String get planToPlan => 'Zu planen';
|
||||
|
||||
@override
|
||||
String get planTimeBlocked => 'Eingeplant';
|
||||
|
||||
@override
|
||||
String get planEmpty => 'Nichts zu planen';
|
||||
|
||||
@override
|
||||
String get planDropHint => 'Hier ablegen, um die Uhrzeit zu entfernen';
|
||||
|
||||
@override
|
||||
String planGroupHide(String group) {
|
||||
return '$group ausblenden';
|
||||
}
|
||||
|
||||
@override
|
||||
String planGroupShow(String group) {
|
||||
return '$group einblenden';
|
||||
}
|
||||
|
||||
@override
|
||||
String get planAllProjects => 'Alle Projekte';
|
||||
|
||||
@override
|
||||
String planProjectsCount(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count Projekte',
|
||||
one: '1 Projekt',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get planFilterTitle => 'Nach Projekt filtern';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1019,6 +1019,59 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String get overdueShow => 'Show what is overdue';
|
||||
|
||||
@override
|
||||
String planButton(int count) {
|
||||
return 'Plan: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get planTitle => 'Plan';
|
||||
|
||||
@override
|
||||
String get planShow => 'Show the Plan';
|
||||
|
||||
@override
|
||||
String get planHide => 'Hide the Plan';
|
||||
|
||||
@override
|
||||
String get planToPlan => 'To plan';
|
||||
|
||||
@override
|
||||
String get planTimeBlocked => 'Time-blocked';
|
||||
|
||||
@override
|
||||
String get planEmpty => 'Nothing to plan';
|
||||
|
||||
@override
|
||||
String get planDropHint => 'Drop here to take its time away';
|
||||
|
||||
@override
|
||||
String planGroupHide(String group) {
|
||||
return 'Hide $group';
|
||||
}
|
||||
|
||||
@override
|
||||
String planGroupShow(String group) {
|
||||
return 'Show $group';
|
||||
}
|
||||
|
||||
@override
|
||||
String get planAllProjects => 'All projects';
|
||||
|
||||
@override
|
||||
String planProjectsCount(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count projects',
|
||||
one: '1 project',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get planFilterTitle => 'Filter by project';
|
||||
}
|
||||
|
||||
/// The translations for English, as used in the United Kingdom (`en_GB`).
|
||||
|
|
|
|||
Loading…
Reference in a new issue