mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-08-17 12:42:15 +01:00
add project edit button to project show page and billing rate info, fixes ST-236
This commit is contained in:
@@ -33,7 +33,10 @@ test('test that updating project member billable rate works for existing time en
|
|||||||
.first()
|
.first()
|
||||||
.getByRole('button')
|
.getByRole('button')
|
||||||
.click();
|
.click();
|
||||||
await page.getByRole('button', { name: 'Edit' }).first().click();
|
await page
|
||||||
|
.getByRole('button', { name: 'Edit Project Member' })
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
await page.getByLabel('Billable Rate').fill(newBillableRate.toString());
|
await page.getByLabel('Billable Rate').fill(newBillableRate.toString());
|
||||||
await page.getByRole('button', { name: 'Update Project Member' }).click();
|
await page.getByRole('button', { name: 'Update Project Member' }).click();
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ import {
|
|||||||
ChevronRightIcon,
|
ChevronRightIcon,
|
||||||
CheckCircleIcon,
|
CheckCircleIcon,
|
||||||
UserGroupIcon,
|
UserGroupIcon,
|
||||||
|
PencilSquareIcon,
|
||||||
} from '@heroicons/vue/20/solid';
|
} from '@heroicons/vue/20/solid';
|
||||||
|
|
||||||
import { Link } from '@inertiajs/vue3';
|
import { Link } from '@inertiajs/vue3';
|
||||||
import TaskCreateModal from '@/Components/Common/Task/TaskCreateModal.vue';
|
import TaskCreateModal from '@/Components/Common/Task/TaskCreateModal.vue';
|
||||||
import TaskTable from '@/Components/Common/Task/TaskTable.vue';
|
import TaskTable from '@/Components/Common/Task/TaskTable.vue';
|
||||||
@@ -19,10 +21,18 @@ import Card from '@/Components/Common/Card.vue';
|
|||||||
import ProjectMemberTable from '@/Components/Common/ProjectMember/ProjectMemberTable.vue';
|
import ProjectMemberTable from '@/Components/Common/ProjectMember/ProjectMemberTable.vue';
|
||||||
import ProjectMemberCreateModal from '@/Components/Common/ProjectMember/ProjectMemberCreateModal.vue';
|
import ProjectMemberCreateModal from '@/Components/Common/ProjectMember/ProjectMemberCreateModal.vue';
|
||||||
import { useProjectMembersStore } from '@/utils/useProjectMembers';
|
import { useProjectMembersStore } from '@/utils/useProjectMembers';
|
||||||
import { canCreateTasks, canViewProjectMembers } from '@/utils/permissions';
|
import {
|
||||||
|
canCreateProjects,
|
||||||
|
canCreateTasks,
|
||||||
|
canViewProjectMembers,
|
||||||
|
} from '@/utils/permissions';
|
||||||
import TabBarItem from '@/Components/Common/TabBar/TabBarItem.vue';
|
import TabBarItem from '@/Components/Common/TabBar/TabBarItem.vue';
|
||||||
import TabBar from '@/Components/Common/TabBar/TabBar.vue';
|
import TabBar from '@/Components/Common/TabBar/TabBar.vue';
|
||||||
import { useTasksStore } from '@/utils/useTasks';
|
import { useTasksStore } from '@/utils/useTasks';
|
||||||
|
import ProjectEditModal from '@/Components/Common/Project/ProjectEditModal.vue';
|
||||||
|
import { Badge } from '@/packages/ui/src';
|
||||||
|
import { formatCents } from '../packages/ui/src/utils/money';
|
||||||
|
import { getOrganizationCurrencyString } from '../utils/money';
|
||||||
|
|
||||||
const { projects } = storeToRefs(useProjectsStore());
|
const { projects } = storeToRefs(useProjectsStore());
|
||||||
|
|
||||||
@@ -45,6 +55,8 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const showEditProjectModal = ref(false);
|
||||||
|
|
||||||
const activeTab = ref<'active' | 'done'>('active');
|
const activeTab = ref<'active' | 'done'>('active');
|
||||||
|
|
||||||
function isActiveTab(tab: string) {
|
function isActiveTab(tab: string) {
|
||||||
@@ -98,7 +110,35 @@ const shownTasks = computed(() => {
|
|||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
<div class="px-4">
|
||||||
|
<Badge v-if="project?.billable_rate">
|
||||||
|
{{
|
||||||
|
formatCents(
|
||||||
|
project?.billable_rate ?? 0,
|
||||||
|
getOrganizationCurrencyString()
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
/ h
|
||||||
|
</Badge>
|
||||||
|
<Badge
|
||||||
|
v-if="project?.is_billable && !project?.billable_rate">
|
||||||
|
Default Rate
|
||||||
|
</Badge>
|
||||||
|
<Badge v-if="!project?.is_billable"> Non-Billable </Badge>
|
||||||
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
<div>
|
||||||
|
<SecondaryButton
|
||||||
|
:icon="PencilSquareIcon"
|
||||||
|
@click="showEditProjectModal = true"
|
||||||
|
v-if="canCreateProjects()">
|
||||||
|
Edit Project
|
||||||
|
</SecondaryButton>
|
||||||
|
<ProjectEditModal
|
||||||
|
v-if="project"
|
||||||
|
:originalProject="project"
|
||||||
|
v-model:show="showEditProjectModal"></ProjectEditModal>
|
||||||
|
</div>
|
||||||
</MainContainer>
|
</MainContainer>
|
||||||
<MainContainer>
|
<MainContainer>
|
||||||
<div class="grid lg:grid-cols-2 gap-x-6 pt-6">
|
<div class="grid lg:grid-cols-2 gap-x-6 pt-6">
|
||||||
|
|||||||
Reference in New Issue
Block a user