Files
meguri/static/generation-page.html
T
Ultradesu 5260c2828b
Checks / test (push) Failing after 2m25s
NEXT
2026-10-07 15:30:31 +01:00

59 lines
6.6 KiB
HTML

<section id="generation" class="setup-section" x-show="view==='configuration'">
<template x-if="generationDraft"><div>
<div class="setup-intro"><h2 x-text="t('setup_sources')"></h2><p class="muted" x-text="t('setup_sources_hint')"></p></div>
<div class="two-columns generation-columns">
<div class="panel generation-panel"><div class="section-line"><h2><span x-text="t('workspace_variables_2c8617')"></span></h2><button @click="editVariable()" x-show="can('edit_schedules')"><span x-text="t('variable_596d48')"></span></button></div><p class="muted"><span x-text="t('projects_people_and_shared_values_0cd0a8')"></span></p>
<div class="workspace-variable-list" role="region" :aria-label="t('workspace_variables_2c8617')" tabindex="0"><template x-for="variable in generationDraft.variables" :key="variable.id"><div class="variable-card"><div class="grow"><strong x-text="variable.name"></strong><small><span x-text="label(variable.node.kind)"></span> <span x-text="t('symbol_1fdf0d')"></span> <span x-text="nodeSummary(variable.node)"></span></small></div><button @click="editVariable(variable)" x-show="can('edit_schedules')" :aria-label="t('edit_variable_22ec4a')+variable.name"><span x-text="t('edit_530164')"></span></button><button class="text danger" @click="removeGenerationItem('variables',variable.id)" x-show="can('edit_schedules')" :aria-label="t('remove_variable_bdd11d')+variable.name"><span x-text="t('remove_e96390')"></span></button></div></template>
</div><p class="muted" x-show="!generationDraft.variables.length"><span x-text="t('no_variables_yet_start_with_a_list_of_projects_and_a_84c8f7')"></span></p></div>
<div class="panel generation-panel"><div class="section-line"><h2><span x-text="t('team_generation_rules_f882ba')"></span></h2><button @click="openGenerationMap()" x-show="can('edit_schedules')" x-text="t('map_open')"></button><button @click="editGenerationRule()" x-show="can('edit_schedules')"><span x-text="t('generation_rule_610cb3')"></span></button></div><p class="muted"><span x-text="t('turn_shared_values_into_schedules_automatically_66a530')"></span></p>
<div class="generation-rule-list" role="region" :aria-label="t('team_generation_rules_f882ba')" tabindex="0"><template x-for="(rule,ruleIndex) in generationDraft.rules" :key="rule.id"><div class="variable-card"><div class="grow"><strong x-text="rule.name"></strong><small x-text="ruleOverview(rule)"></small></div><button :aria-label="t('move_rule_up_a8ab03')" @click="moveGenerationRule(ruleIndex,-1)" :disabled="ruleIndex===0" x-show="can('edit_schedules')"><span x-text="t('symbol_9555ff')"></span></button><button :aria-label="t('move_rule_down_2c58ed')" @click="moveGenerationRule(ruleIndex,1)" :disabled="ruleIndex===generationDraft.rules.length-1" x-show="can('edit_schedules')"><span x-text="t('symbol_fc4866')"></span></button><button @click="editGenerationRule(rule)" x-show="can('edit_schedules')" :aria-label="t('edit_rule_d0838a')+rule.name"><span x-text="t('edit_530164')"></span></button><button class="text danger" @click="removeGenerationItem('rules',rule.id)" x-show="can('edit_schedules')" :aria-label="t('remove_rule_2dd5ee')+rule.name"><span x-text="t('remove_e96390')"></span></button></div></template>
</div><p class="muted" x-show="!generationDraft.rules.length"><span x-text="t('one_rule_can_produce_all_your_project_schedules_bb9e45')"></span></p>
<label class="generated-routing-placement" x-show="orderedRoutes.some(r=>!generated(r.id)) && generationDraft.rules.some(r=>r.enabled && r.blocks.some(b=>b.kind==='route'))"><span x-text="t('generated_routing_block_position_e14d64')"></span><select :aria-label="t('generated_routing_block_position_e14d64')" :value="generationDraft.route_position" @change="generationDraft.route_position=Number($event.target.value)"><option value="0" :selected="generationDraft.route_position===0" x-text="t('first_before_manual_routing_rules_b44e75')"></option><template x-for="(route,index) in orderedRoutes.filter(r=>!generated(r.id))" :key="route.id"><option :value="index+1" :selected="generationDraft.route_position===index+1" x-text="t('generated_routing_after_named',{name:route.name})"></option></template></select></label></div>
<section id="availability" class="setup-section setup-availability" x-show="view==='configuration'">
<div class="setup-utilities">
<section class="setup-widget absence-widget"><div class="widget-heading"><span x-text="t('absences_0f9ec2')"></span><span class="badge" x-text="doc.absences.length"></span></div><div class="widget-body"><button class="text" x-show="can('edit_schedules') || can('request_overrides') || can('force_overrides')" @click="open('absence')" x-text="t('absence_0e0616')"></button>
<div class="widget-scroll">
<p class="muted" x-show="!doc.absences.length"><span x-text="t('no_absences_planned_224ab7')"></span></p>
<template x-for="a in doc.absences" :key="a.id">
<div class="list-row">
<div>
<strong x-text="person(a.user_id)">
</strong>
<small x-text="formatDate(a.start)+' — '+formatDate(a.end)+t('inclusive_75b495')">
</small>
</div>
<button class="text danger" x-show="can('edit_schedules')" @click="removeItem('absences',a.id)"><span x-text="t('remove_e96390')"></span></button>
</div>
</template></div></div></section>
<section id="public-holidays" class="setup-widget holiday-widget"><div class="widget-heading"><span x-text="t('public_holidays_badf9f')"></span><span class="badge" x-text="doc.holidays.length"></span></div>
<div class="widget-body"><div class="actions" x-show="can('edit_schedules')"><button @click="open('holiday-import')" x-text="t('import_csv_eeec98')"></button><button class="text" @click="open('holiday')" x-text="t('holiday_85f1a0')"></button></div><div class="widget-scroll"><p class="muted" x-show="!doc.holidays.length"><span x-text="t('no_holidays_yet_import_dates_for_the_countries_your__c8ed79')"></span></p>
<template x-for="group in holidayGroups" :key="group.country">
<details class="holiday-group">
<summary>
<span x-text="countryName(group.country)">
</span>
<span class="badge" x-text="group.holidays.length" :aria-label="group.holidays.length+t('holidays_9db6c2')">
</span>
</summary>
<template x-for="h in group.holidays" :key="h.date">
<div class="list-row">
<div class="grow">
<strong x-text="h.name">
</strong>
<small x-text="formatDate(h.date)+t('country_calendar_date_cc65d7')">
</small>
</div>
<button class="text danger" x-show="can('edit_schedules')" @click="removeItem('holidays',h.country+':'+h.date)"><span x-text="t('remove_e96390')"></span></button>
</div>
</template>
</details>
</template></div></div></section>
</div></section>
</div>
<div class="page-validation" x-data="{validationScope:'generation'}"><!-- VALIDATION_STATUS --></div>
</div></template>
</section>