feat(fusion_planning): new module bridging fusion_clock with Odoo Planning
Adds a 'My Schedule' tab to the Fusion Clock portal that lists the current employee's published planning.slot records, grouped by day. Reuses the fusion_clock dark theme and reuses Odoo Planning's stock backend UI (Gantt, send wizard, recurrence) unchanged. - Controller /my/clock/schedule: pulls published slots in next 60 days - Portal template with next-shift hero card, summary stats, grouped list - Bottom-nav xpath inherits target the nav bar specifically (not the Recent Activity 'View All' link, which also linked to /my/clock/timesheets) - 4-tab nav fits via reduced padding and flex sizing Module depends on stock 'planning' (Enterprise) + fusion_clock. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
115
fusion_planning/static/src/css/portal_schedule.css
Normal file
115
fusion_planning/static/src/css/portal_schedule.css
Normal file
@@ -0,0 +1,115 @@
|
||||
/* Fusion Planning - Portal Schedule
|
||||
* Inherits Fusion Clock dark-theme tokens (--fclk-card, --fclk-green, etc.)
|
||||
*/
|
||||
|
||||
/* ---- 4-tab nav fit ---- */
|
||||
.fclk-nav-bar {
|
||||
justify-content: space-around !important;
|
||||
}
|
||||
|
||||
.fclk-nav-item {
|
||||
padding: 8px 12px !important;
|
||||
flex: 1;
|
||||
max-width: 96px;
|
||||
}
|
||||
|
||||
/* ---- Next Shift hero card ---- */
|
||||
.fpl-next-shift {
|
||||
text-align: center;
|
||||
padding: 20px 16px;
|
||||
}
|
||||
|
||||
.fpl-next-label {
|
||||
font-size: 11px;
|
||||
color: var(--fclk-text-dim);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.fpl-next-date {
|
||||
font-size: 18px;
|
||||
color: var(--fclk-text);
|
||||
font-weight: 600;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.fpl-next-time {
|
||||
font-size: 32px;
|
||||
color: var(--fclk-green);
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.02em;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.fpl-next-role {
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
color: var(--fclk-text-dim);
|
||||
background: rgba(16, 185, 129, 0.08);
|
||||
border: 1px solid rgba(16, 185, 129, 0.18);
|
||||
padding: 4px 12px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* ---- Empty state ---- */
|
||||
.fpl-empty-card {
|
||||
text-align: center;
|
||||
padding: 28px 16px;
|
||||
}
|
||||
|
||||
.fpl-empty-icon {
|
||||
margin-bottom: 12px;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.fpl-empty-title {
|
||||
font-size: 16px;
|
||||
color: var(--fclk-text);
|
||||
font-weight: 600;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.fpl-empty-sub {
|
||||
font-size: 13px;
|
||||
color: var(--fclk-text-dim);
|
||||
}
|
||||
|
||||
/* ---- Group headers ---- */
|
||||
.fpl-group {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.fpl-group-title {
|
||||
font-size: 13px;
|
||||
color: var(--fclk-text-dim);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
font-weight: 600;
|
||||
margin: 12px 16px 8px;
|
||||
}
|
||||
|
||||
.fpl-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
/* ---- Shift item polish ---- */
|
||||
.fpl-shift-item .fclk-recent-info {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.fpl-shift-note {
|
||||
font-size: 11px;
|
||||
color: var(--fclk-text-dim);
|
||||
margin-top: 2px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* ---- Bottom padding so nav doesn't cover last shift ---- */
|
||||
.fclk-container {
|
||||
padding-bottom: 80px;
|
||||
}
|
||||
Reference in New Issue
Block a user