mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
added generatedBy
This commit is contained in:
@@ -4,6 +4,7 @@ import { toast } from "sonner";
|
||||
|
||||
import api from "@/utils/api.util";
|
||||
import { useAdvertisements } from "@/contexts/AdminAdvertisementContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -17,6 +18,7 @@ import { buildSelectionActions } from "../../config/advertisements/arc
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { useDateFormat } from "@/hooks/useDateFormat";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedAdvertisementsTable() {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null);
|
||||
@@ -33,6 +35,7 @@ export default function ArchivedAdvertisementsTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
const { fmtDateTime } = useDateFormat();
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
advertisements, attributes, pagination, setPagination, loading,
|
||||
@@ -54,6 +57,7 @@ export default function ArchivedAdvertisementsTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedAdvertisements`,
|
||||
sheetName: "Archived Advertisements",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useAssets } from "@/contexts/AdminAssetsContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,6 +15,7 @@ import { buildRowActions } from "../../config/assets/archive/row
|
||||
import { buildSelectionActions } from "../../config/assets/archive/selection.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedAssetsTable() {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null);
|
||||
@@ -30,6 +32,8 @@ export default function ArchivedAssetsTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
assets, attributes, pagination, setPagination, loading,
|
||||
fetchArchivedAssets, restoreAsset, restoreAssets, fetchAssetFieldValues,
|
||||
@@ -49,6 +53,7 @@ export default function ArchivedAssetsTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedAssets`,
|
||||
sheetName: "Archived Assets",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -4,6 +4,7 @@ import { useMemo, useRef, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useAssets } from "@/contexts/AdminAssetsContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -15,6 +16,7 @@ import { buildSelectionActions } from "../../config/assets/selection.config";
|
||||
import { buildRowActions } from "../../config/assets/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function AssetsTable() {
|
||||
const [archiveTarget, setArchiveTarget] = useState(null);
|
||||
@@ -29,6 +31,8 @@ export default function AssetsTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
assets, attributes, pagination, setPagination, loading,
|
||||
fetchAssets, archiveAsset, archiveAssets, fetchAssetFieldValues
|
||||
@@ -43,6 +47,7 @@ export default function AssetsTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_Assets`,
|
||||
sheetName: "Assets",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const resolveViewPath = (row) => {
|
||||
|
||||
@@ -15,6 +15,7 @@ import { buildSelectionActions } from "../../config/courses/archive/selection.co
|
||||
import { buildRowActions } from "../../config/courses/archive/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedCoursesTable() {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null);
|
||||
@@ -31,6 +32,8 @@ export default function ArchivedCoursesTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
courses, attributes, pagination, setPagination, loading, fetchArchivedCourses,
|
||||
restoreCourse, restoreCourses,
|
||||
@@ -46,6 +49,7 @@ export default function ArchivedCoursesTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedCourses`,
|
||||
sheetName: "Archived Courses",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = useMemo(() => buildRowActions({
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useEffect, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useCourses } from "@/contexts/AdminCoursesContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,6 +15,7 @@ import { buildSelectionActions } from "../../config/courses/lessons/archive/sele
|
||||
import { buildRowActions } from "../../config/courses/lessons/archive/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedLessonsTable({ courseId, unitId }) {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null);
|
||||
@@ -30,6 +32,8 @@ export default function ArchivedLessonsTable({ courseId, unitId }) {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
course, unit, lessons, attributes, pagination, setPagination, loading,
|
||||
fetchArchivedLessons, restoreLesson, restoreLessons, fetchLessonFieldValues,
|
||||
@@ -45,6 +49,7 @@ export default function ArchivedLessonsTable({ courseId, unitId }) {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_${course?.title}_${unit?.title}_Lessons`,
|
||||
sheetName: "Archived Lessons",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const handleFetch = useCallback(
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useCourses } from "@/contexts/AdminCoursesContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,6 +15,7 @@ import { buildSelectionActions } from "../../config/courses/units/archive/select
|
||||
import { buildRowActions } from "../../config/courses/units/archive/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedUnitsTable({ courseId }) {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null);
|
||||
@@ -30,6 +32,8 @@ export default function ArchivedUnitsTable({ courseId }) {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
course, units, attributes, pagination, setPagination, loading,
|
||||
fetchArchivedUnits, restoreUnit, restoreUnits, fetchUnitFieldValues,
|
||||
@@ -45,6 +49,7 @@ export default function ArchivedUnitsTable({ courseId }) {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_${course?.title}_ArchivedUnits`,
|
||||
sheetName: "Archived Units",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const handleFetch = useCallback(
|
||||
|
||||
@@ -15,6 +15,7 @@ import { buildSelectionActions } from "../../config/courses/selection.config";
|
||||
import { buildRowActions } from "../../config/courses/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function CoursesTable() {
|
||||
const [archiveTarget, setArchiveTarget] = useState(null);
|
||||
@@ -29,6 +30,8 @@ export default function CoursesTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const { courses, attributes, pagination, setPagination, loading, fetchCourses, reorderCourses, archiveCourse, archiveCourses, fetchCourseFieldValues } = useCourses();
|
||||
|
||||
const handleRefsReady = (refs) => {
|
||||
@@ -40,6 +43,7 @@ export default function CoursesTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_Courses`,
|
||||
sheetName: "Courses",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
// Reorder — swaps this row with its neighbor in the currently displayed
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useEffect, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useCourses } from "@/contexts/AdminCoursesContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import api from "@/utils/api.util";
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
@@ -16,6 +17,7 @@ import { buildSelectionActions } from "../../config/courses/lessons/selection.co
|
||||
import { buildRowActions } from "../../config/courses/lessons/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function LessonsTable({ courseId, unitId }) {
|
||||
const [archiveTarget, setArchiveTarget] = useState(null);
|
||||
@@ -31,6 +33,8 @@ export default function LessonsTable({ courseId, unitId }) {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
course, unit, lessons, attributes, pagination, setPagination, loading,
|
||||
fetchLessons, archiveLesson, archiveLessons, fetchLessonFieldValues
|
||||
@@ -45,6 +49,7 @@ export default function LessonsTable({ courseId, unitId }) {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_${course?.title}_${unit?.title}_Lessons`,
|
||||
sheetName: "Lessons",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const handleFetch = useCallback(
|
||||
|
||||
@@ -17,6 +17,7 @@ import { buildSelectionActions } from "../../config/courses/units/selection.conf
|
||||
import { buildRowActions } from "../../config/courses/units/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function UnitsTable({ courseId, returnTo }) {
|
||||
const [archiveTarget, setArchiveTarget] = useState(null);
|
||||
@@ -32,6 +33,8 @@ export default function UnitsTable({ courseId, returnTo }) {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
course, units, attributes, pagination, setPagination, loading,
|
||||
fetchUnits, archiveUnit, archiveUnits, fetchUnitFieldValues
|
||||
@@ -46,6 +49,7 @@ export default function UnitsTable({ courseId, returnTo }) {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_${course?.title}_Units`,
|
||||
sheetName: "Units",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const handleFetch = useCallback(
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useLibrary } from "@/contexts/AdminLibraryContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,6 +15,7 @@ import { buildArchivedSelectionActions } from "../../config/library/lessons/sele
|
||||
import { buildArchivedRowActions } from "../../config/library/lessons/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedLessonLibraryTable() {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null);
|
||||
@@ -30,6 +32,8 @@ export default function ArchivedLessonLibraryTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
lessons, attributes, pagination, setPagination, loading,
|
||||
fetchArchivedLessons, restoreLesson, restoreLessons,
|
||||
@@ -46,6 +50,7 @@ export default function ArchivedLessonLibraryTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedLessonLibrary`,
|
||||
sheetName: "Archived Lessons",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const handleFetch = useCallback((params) => fetchArchivedLessons(params), [fetchArchivedLessons]);
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useLibrary } from "@/contexts/AdminLibraryContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,6 +15,7 @@ import { buildArchivedSelectionActions } from "../../config/library/units/select
|
||||
import { buildArchivedRowActions } from "../../config/library/units/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedUnitLibraryTable() {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null);
|
||||
@@ -30,6 +32,8 @@ export default function ArchivedUnitLibraryTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
units, attributes, pagination, setPagination, loading,
|
||||
fetchArchivedUnits, restoreUnit, restoreUnits,
|
||||
@@ -46,6 +50,7 @@ export default function ArchivedUnitLibraryTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedUnitLibrary`,
|
||||
sheetName: "Archived Units",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const handleFetch = useCallback((params) => fetchArchivedUnits(params), [fetchArchivedUnits]);
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useLibrary } from "@/contexts/AdminLibraryContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -13,6 +14,7 @@ import { buildSelectionActions } from "../../config/library/lessons/selection.co
|
||||
import { buildRowActions } from "../../config/library/lessons/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function LessonLibraryTable() {
|
||||
const [archiveTarget, setArchiveTarget] = useState(null);
|
||||
@@ -27,6 +29,8 @@ export default function LessonLibraryTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
lessons, attributes, pagination, setPagination, loading,
|
||||
fetchLessons, archiveLesson, archiveLessons,
|
||||
@@ -42,6 +46,7 @@ export default function LessonLibraryTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_LessonLibrary`,
|
||||
sheetName: "Lessons",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const handleFetch = useCallback((params) => fetchLessons(params), [fetchLessons]);
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useLibrary } from "@/contexts/AdminLibraryContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -13,6 +14,7 @@ import { buildSelectionActions } from "../../config/library/units/selection.conf
|
||||
import { buildRowActions } from "../../config/library/units/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function UnitLibraryTable() {
|
||||
const [archiveTarget, setArchiveTarget] = useState(null);
|
||||
@@ -27,6 +29,8 @@ export default function UnitLibraryTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
units, attributes, pagination, setPagination, loading,
|
||||
fetchUnits, archiveUnit, archiveUnits,
|
||||
@@ -42,6 +46,7 @@ export default function UnitLibraryTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_UnitLibrary`,
|
||||
sheetName: "Units",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const handleFetch = useCallback((params) => fetchUnits(params), [fetchUnits]);
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useNotificationBroadcasts } from "@/contexts/AdminNotificationBroadcastContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,6 +15,7 @@ import { buildRowActions } from "../../config/notifications/arch
|
||||
import { buildSelectionActions } from "../../config/notifications/archive/selection.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedNotificationBroadcastsTable() {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null);
|
||||
@@ -30,6 +32,8 @@ export default function ArchivedNotificationBroadcastsTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
broadcasts, attributes, pagination, setPagination, loading,
|
||||
fetchArchivedBroadcasts, restoreBroadcast, restoreBroadcasts,
|
||||
@@ -49,6 +53,7 @@ export default function ArchivedNotificationBroadcastsTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedNotificationBroadcasts`,
|
||||
sheetName: "Archived Announcements",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useAdminTask } from "@/contexts/AdminTaskContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,10 +15,13 @@ import { buildSelectionActions } from "@/modules/admin/config/task_list/archive/
|
||||
import { buildRowActions } from "@/modules/admin/config/task_list/archive/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchiveTaskListTable() {
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
taskLists, attributes, pagination, loading,
|
||||
fetchArchivedTaskLists,
|
||||
@@ -73,6 +77,7 @@ export default function ArchiveTaskListTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedTaskLists`,
|
||||
sheetName: "Archived Task Lists",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useCallback, useEffect } from "react";
|
||||
import { useNavigate, useParams } from "react-router-dom";
|
||||
|
||||
import { useAdminTask } from "@/contexts/AdminTaskContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,6 +15,7 @@ import { buildSelectionActions } from "@/modules/admin/config/task_list/task/arc
|
||||
import { buildRowActions } from "@/modules/admin/config/task_list/task/archive/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
import {
|
||||
Dialog,
|
||||
@@ -30,6 +32,8 @@ export default function ArchivedTaskTable() {
|
||||
const navigate = useNavigate();
|
||||
const { taskListId } = useParams();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
taskList, tasks, attributes, pagination, loading,
|
||||
fetchTaskList, fetchArchivedTasks, fetchTaskFieldValues,
|
||||
@@ -96,7 +100,8 @@ export default function ArchivedTaskTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedTasks`,
|
||||
sheetName: "Archived Tasks",
|
||||
}), [tasks, attributes]);
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
}), [tasks, attributes, currentUser]);
|
||||
|
||||
const rowActions = useMemo(() => buildRowActions({
|
||||
navigate,
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useAdminTask } from "@/contexts/AdminTaskContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,10 +15,13 @@ import { buildSelectionActions } from "../../config/task_list/selection.config";
|
||||
import { buildRowActions } from "../../config/task_list/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function TaskListTable() {
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
taskLists, attributes, pagination, loading,
|
||||
fetchTaskLists, fetchArchivedTaskLists, fetchTaskListFieldValues,
|
||||
@@ -77,7 +81,8 @@ export default function TaskListTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_TaskLists`,
|
||||
sheetName: "Task Lists",
|
||||
}), [taskLists, attributes]);
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
}), [taskLists, attributes, currentUser]);
|
||||
|
||||
// ── Row actions ───────────────────────────────────────────────────────────
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useTiers } from "@/contexts/AdminTiersContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -14,10 +15,13 @@ import { buildSelectionActions } from "../../config/tiers/plans/archive/selectio
|
||||
import { buildRowActions } from "../../config/tiers/plans/archive/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchivedTierPlansTable() {
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
plans, planAttributes, planPagination, setPlanPagination,
|
||||
loading, fetchPlans, restorePlan, bulkRestorePlans,
|
||||
@@ -48,7 +52,8 @@ export default function ArchivedTierPlansTable() {
|
||||
attributes: planAttributes,
|
||||
filename: `${getTimestamp()}_ArchivedTierPlans`,
|
||||
sheetName: "Archived Tier Plans",
|
||||
}), [plans, planAttributes]);
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
}), [plans, planAttributes, currentUser]);
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
navigate,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { useMemo, useRef, useCallback, useEffect, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { useTiers } from "@/contexts/AdminTiersContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
import { useDateFormat } from "@/hooks/useDateFormat";
|
||||
import api from "@/utils/api.util";
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
@@ -10,6 +11,7 @@ import { buildToolbarActions } from "../../config/tiers/payments/toolbar.config"
|
||||
import { buildSelectionActions } from "../../config/tiers/payments/selection.config";
|
||||
import { buildRowActions } from "../../config/tiers/payments/rowActions.config";
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function PaymentsTable({ planId = null }) {
|
||||
const tableRefsRef = useRef({
|
||||
@@ -21,6 +23,7 @@ export default function PaymentsTable({ planId = null }) {
|
||||
|
||||
const navigate = useNavigate();
|
||||
const { fmtDateTime } = useDateFormat();
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
payments, paymentAttributes,
|
||||
@@ -40,6 +43,7 @@ export default function PaymentsTable({ planId = null }) {
|
||||
attributes: paymentAttributes,
|
||||
filename: `${getTimestamp()}_Payments`,
|
||||
sheetName: "Payments",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = useMemo(() => buildRowActions({
|
||||
|
||||
@@ -3,6 +3,7 @@ import { useNavigate, Link } from "react-router-dom";
|
||||
import { Layers } from "lucide-react";
|
||||
|
||||
import { useTiers } from "@/contexts/AdminTiersContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
import api from "@/utils/api.util";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
@@ -15,10 +16,13 @@ import { buildSelectionActions } from "../../config/tiers/plans/selection.config
|
||||
import { buildRowActions } from "../../config/tiers/plans/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function TierPlansTable() {
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
plans, planAttributes, planPagination, setPlanPagination,
|
||||
loading, fetchPlans, deletePlan, bulkDeletePlans,
|
||||
@@ -64,7 +68,8 @@ export default function TierPlansTable() {
|
||||
attributes: planAttributes,
|
||||
filename: `${getTimestamp()}_TierPlans`,
|
||||
sheetName: "Tier Plans",
|
||||
}), [plans, planAttributes]);
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
}), [plans, planAttributes, currentUser]);
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
navigate,
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useUserGroups } from "@/contexts/AdminUserGroupContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
import { RestoreDialog } from "@/components/generic/Dialogs/RestoreDialog";
|
||||
@@ -13,6 +14,7 @@ import { buildSelectionActions } from "../../config/user_groups/archive/selectio
|
||||
import { buildRowActions } from "../../config/user_groups/archive/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchiveGroupTable() {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null); // single: row object
|
||||
@@ -21,6 +23,7 @@ export default function ArchiveGroupTable() {
|
||||
const [deleteIds, setDeleteIds] = useState(null);
|
||||
const tableRefsRef = useRef({ getFilters: () => [], getSort: () => [], resetSelection: () => {} });
|
||||
const navigate = useNavigate();
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
groups,
|
||||
@@ -41,6 +44,7 @@ export default function ArchiveGroupTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedUserGroups`,
|
||||
sheetName: "ArchivedUserGroups",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -5,6 +5,7 @@ import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useUserGroups } from "@/contexts/AdminUserGroupContext";
|
||||
import { useDashboard } from "@/contexts/AdminDashboardContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -20,6 +21,7 @@ import { buildRowActions } from "../../config/user_groups/rowActions.config";
|
||||
|
||||
import { GROUP_STAT_MAP } from "@/data/adminDashboard.data";
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function GroupTable() {
|
||||
const [createOpen, setCreateOpen] = useState(false);
|
||||
@@ -36,6 +38,8 @@ export default function GroupTable() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
groups, attributes, pagination, setPagination, loading,
|
||||
fetchGroups, fetchGroupFieldValues,
|
||||
@@ -58,6 +62,7 @@ export default function GroupTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_UserGroups`,
|
||||
sheetName: "UserGroups",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useMemo, useRef, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { useUsers } from "@/contexts/AdminUserContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
import DataTable from "@/components/generic/Table/DataTable";
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
import { RestoreDialog } from "@/components/generic/Dialogs/RestoreDialog";
|
||||
@@ -13,6 +14,7 @@ import { buildSelectionActions } from "../../config/users/archive/selection.conf
|
||||
import { buildRowActions } from "../../config/users/archive/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function ArchiveGroupTable() {
|
||||
const [restoreTarget, setRestoreTarget] = useState(null); // single: row object
|
||||
@@ -21,6 +23,7 @@ export default function ArchiveGroupTable() {
|
||||
const [deleteIds, setDeleteIds] = useState(null);
|
||||
const tableRefsRef = useRef({ getFilters: () => [], getSort: () => [], resetSelection: () => { } });
|
||||
const navigate = useNavigate();
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
users,
|
||||
@@ -42,6 +45,7 @@ export default function ArchiveGroupTable() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_ArchivedUserGroups`,
|
||||
sheetName: "ArchivedUserGroups",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -20,8 +20,8 @@ import { buildSelectionActions } from "../../config/users/selection.config";
|
||||
import { buildRowActions } from "../../config/users/rowActions.config";
|
||||
|
||||
import { USER_STAT_MAP } from "@/data/adminDashboard.data";
|
||||
import { ROLE_CONFIG } from "@/data/profile.data";
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
export default function UsersTable() {
|
||||
const [archiveTarget, setArchiveTarget] = useState(null);
|
||||
@@ -59,17 +59,13 @@ export default function UsersTable() {
|
||||
tableRefsRef.current = refs; // ← just store directly, no override needed
|
||||
};
|
||||
|
||||
const generatedBy = currentUser
|
||||
? `${currentUser.personal_info?.name?.full_name ?? currentUser.email} (${ROLE_CONFIG[currentUser.acc_type]?.label ?? currentUser.acc_type})`
|
||||
: undefined;
|
||||
|
||||
const exportConfig = {
|
||||
allData: users,
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_Users`,
|
||||
sheetName: "Users",
|
||||
title: "Users",
|
||||
generatedBy,
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { useNavigate, useParams } from 'react-router-dom';
|
||||
|
||||
import { useAdminTask } from '@/contexts/AdminTaskContext';
|
||||
import { useAuth } from '@/contexts/AuthContext';
|
||||
|
||||
import DataTable from '@/components/generic/Table/DataTable';
|
||||
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
|
||||
@@ -31,11 +32,14 @@ import { buildToolbarActions } from '@/modules/admin/config/task_list/task/toolb
|
||||
import { buildSelectionActions } from '@/modules/admin/config/task_list/task/selection.config';
|
||||
import { buildRowActions } from '@/modules/admin/config/task_list/task/rowActions.config';
|
||||
import { getTimestamp } from '@/utils/timestamp.util';
|
||||
import { formatGeneratedBy } from '@/utils/generatedBy.util';
|
||||
|
||||
export default function Tasks() {
|
||||
const navigate = useNavigate();
|
||||
const { taskListId } = useParams();
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
taskList, tasks, attributes, pagination, loading,
|
||||
fetchTaskList, fetchTasks, fetchArchivedTasks,
|
||||
@@ -94,7 +98,8 @@ export default function Tasks() {
|
||||
attributes,
|
||||
filename: `${getTimestamp()}_Tasks`,
|
||||
sheetName: "Tasks",
|
||||
}), [tasks, attributes]);
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
}), [tasks, attributes, currentUser]);
|
||||
|
||||
// ── Reorder — swaps this row with its neighbor in the currently displayed
|
||||
// (unfiltered/default-sorted) list, then persists the new order_index set.
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { useNavigate, useParams, useSearchParams } from 'react-router-dom';
|
||||
|
||||
import { useAdminTask } from '@/contexts/AdminTaskContext';
|
||||
import { useAuth } from '@/contexts/AuthContext';
|
||||
import { useDateFormat } from '@/hooks/useDateFormat';
|
||||
|
||||
import { Button } from '@/components/ui/button';
|
||||
@@ -29,6 +30,7 @@ import {
|
||||
|
||||
import { formatDate } from '@/utils/table.util';
|
||||
import { getTimestamp } from '@/utils/timestamp.util';
|
||||
import { formatGeneratedBy } from '@/utils/generatedBy.util';
|
||||
|
||||
import { buildDataColumns, columnPinning } from '@/modules/admin/config/task_list/task_completion/columns.config';
|
||||
import { buildToolbarActions } from '@/modules/admin/config/task_list/task_completion/toolbar.config';
|
||||
@@ -179,6 +181,7 @@ export default function ViewTask() {
|
||||
bulkArchiveCompletions, bulkRestoreCompletions,
|
||||
} = useAdminTask();
|
||||
const { fmtDateTime } = useDateFormat();
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const [activeTab, setActiveTab] = useState(
|
||||
searchParams.get('tab') === 'completions' ? 'completions' : 'overview'
|
||||
@@ -256,7 +259,8 @@ export default function ViewTask() {
|
||||
attributes: completionAttributes,
|
||||
filename: `${getTimestamp()}_Completions`,
|
||||
sheetName: 'Completions',
|
||||
}), [completions, completionAttributes]);
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
}), [completions, completionAttributes, currentUser]);
|
||||
|
||||
const rowActions = buildCompletionRowActions({
|
||||
navigate,
|
||||
|
||||
@@ -31,6 +31,7 @@ import { cn } from "@/lib/utils";
|
||||
|
||||
import { useUserGroups } from "@/contexts/AdminUserGroupContext";
|
||||
import { useUsers } from "@/contexts/AdminUserContext";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
import { useDateFormat } from "@/hooks/useDateFormat";
|
||||
|
||||
import { buildDataColumns, columnPinning } from "../../config/user_groups/view/columns.config";
|
||||
@@ -39,6 +40,7 @@ import { buildSelectionActions } from "../../config/user_groups/view/selection.c
|
||||
import { buildRowActions } from "../../config/user_groups/view/rowActions.config";
|
||||
|
||||
import { getTimestamp } from "@/utils/timestamp.util";
|
||||
import { formatGeneratedBy } from "@/utils/generatedBy.util";
|
||||
|
||||
// ─── Invite Link Dialog ───────────────────────────────────────────────────────
|
||||
function InviteLinkDialog({ open, onOpenChange, group }) {
|
||||
@@ -288,6 +290,8 @@ export default function ViewGroup() {
|
||||
const [assignTarget, setAssignTarget] = useState(null); // single row
|
||||
const [assignIds, setAssignIds] = useState(null); // bulk ids[]
|
||||
|
||||
const { user: currentUser } = useAuth();
|
||||
|
||||
const {
|
||||
group,
|
||||
groups,
|
||||
@@ -327,6 +331,7 @@ export default function ViewGroup() {
|
||||
attributes: memberAttrs,
|
||||
filename: `${getTimestamp()}_Group_${groupId}_Members`,
|
||||
sheetName: "Members",
|
||||
generatedBy: formatGeneratedBy(currentUser),
|
||||
};
|
||||
|
||||
const rowActions = buildRowActions({
|
||||
|
||||
Reference in New Issue
Block a user