From 2c3ab05281d2f550ff75574bd72b2607cf20a2c6 Mon Sep 17 00:00:00 2001 From: dyusuke3263 Date: Wed, 29 Nov 2023 00:20:10 +0900 Subject: [PATCH 001/113] =?UTF-8?q?[fix]=E7=B7=A8=E9=9B=86=E3=83=A2?= =?UTF-8?q?=E3=83=BC=E3=83=80=E3=83=AB=E3=81=A7=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=E3=81=8C=E5=8F=8D=E6=98=A0=E3=81=95=E3=82=8C=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=83=90=E3=82=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/sponsoractivities/EditModal.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/view/next-project/src/components/sponsoractivities/EditModal.tsx b/view/next-project/src/components/sponsoractivities/EditModal.tsx index d94700e61..6c708cd20 100644 --- a/view/next-project/src/components/sponsoractivities/EditModal.tsx +++ b/view/next-project/src/components/sponsoractivities/EditModal.tsx @@ -42,6 +42,8 @@ export default function EditModal(props: ModalProps) { expense: Number((props.sponsorActivity.expense / 11).toFixed(1)), }); + const default_user = users.find((user) => user.id === formData.userID); + const initStyleIds = sponsorStyleDetails ? sponsorStyleDetails.map((sponsorStyleDetail) => sponsorStyleDetail.sponsorStyleID) : []; @@ -178,7 +180,10 @@ export default function EditModal(props: ModalProps) { .filter((user, index, self) => { return self.findIndex((u) => u.name === user.name) === index; }); - if (res.length !== 0) setFormData({ ...formData, userID: res[0].id }); + + if (res.length !== 0 && default_user?.bureauID !== bureauId) { + setFormData({ ...formData, userID: res[0].id }); + } return res; }, [bureauId]); From 24486ecc975f2d6353cba23c1dd732b51a98d7ba Mon Sep 17 00:00:00 2001 From: dyusuke3263 Date: Tue, 28 Nov 2023 15:27:08 +0000 Subject: [PATCH 002/113] formatted by workflow --- .../src/components/sponsoractivities/EditModal.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/EditModal.tsx b/view/next-project/src/components/sponsoractivities/EditModal.tsx index 6c708cd20..5fb8ef2f6 100644 --- a/view/next-project/src/components/sponsoractivities/EditModal.tsx +++ b/view/next-project/src/components/sponsoractivities/EditModal.tsx @@ -180,10 +180,10 @@ export default function EditModal(props: ModalProps) { .filter((user, index, self) => { return self.findIndex((u) => u.name === user.name) === index; }); - - if (res.length !== 0 && default_user?.bureauID !== bureauId) { - setFormData({ ...formData, userID: res[0].id }); - } + + if (res.length !== 0 && default_user?.bureauID !== bureauId) { + setFormData({ ...formData, userID: res[0].id }); + } return res; }, [bureauId]); From a4f4cdf5d8d411991bb3beda00b6664cab47ead5 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Tue, 27 Feb 2024 23:27:50 +0900 Subject: [PATCH 003/113] =?UTF-8?q?[fix]=20=E5=90=84=E5=B9=B4=E5=BA=A6?= =?UTF-8?q?=E3=81=94=E3=81=A8=E3=81=AB=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/sponsoractivities/index.tsx | 135 +++++++++++++----- 1 file changed, 96 insertions(+), 39 deletions(-) diff --git a/view/next-project/src/pages/sponsoractivities/index.tsx b/view/next-project/src/pages/sponsoractivities/index.tsx index 0d3edb0ba..954ed2634 100644 --- a/view/next-project/src/pages/sponsoractivities/index.tsx +++ b/view/next-project/src/pages/sponsoractivities/index.tsx @@ -1,6 +1,6 @@ import clsx from 'clsx'; import Head from 'next/head'; -import { useState, useMemo } from 'react'; +import { useState, useEffect, useMemo } from 'react'; import { RiExternalLinkLine } from 'react-icons/ri'; import PrimaryButton from '@/components/common/OutlinePrimaryButton/OutlinePrimaryButton'; @@ -21,6 +21,7 @@ import { SponsorStyle, User, ActivityStyle, + YearPeriod, } from '@type/common'; interface Props { @@ -30,11 +31,18 @@ interface Props { sponsors: Sponsor[]; users: User[]; activityStyles: ActivityStyle[]; + yearPeriods: YearPeriod[]; } export async function getServerSideProps() { - const getSponsorActivitiesUrl = process.env.SSR_API_URI + '/activities'; - const getSponsorActivitiesViewUrl = process.env.SSR_API_URI + '/activities/details'; + const getSponsorActivitiesUrl = process.env.SSR_API_URI + '/years/periods'; + const periodsRes = await get(getSponsorActivitiesUrl); + const getSponsorActivitiesViewUrl = + process.env.SSR_API_URI + + '/activities/details/' + + (periodsRes + ? String(periodsRes[periodsRes.length - 1].year) + : String(new Date().getFullYear())); const getSponsorStylesUrl = process.env.SSR_API_URI + '/sponsorstyles'; const getSponsorsUrl = process.env.SSR_API_URI + '/sponsors'; const getUsersUrl = process.env.SSR_API_URI + '/users'; @@ -55,6 +63,7 @@ export async function getServerSideProps() { sponsors: sponsorsRes, users: usersRes, activityStyles: activityStylesRes, + yearPeriods: periodsRes, }, }; } @@ -67,6 +76,9 @@ const formatYYYYMMDD = (date: Date) => { }; export default function SponsorActivities(props: Props) { + const [sponsorActivities, setSponsorActivitiesViews] = useState( + props.sponsorActivitiesView, + ); const [sponsorActivitiesID, setSponsorActivitiesID] = useState(1); const [sponsorActivitiesItem, setSponsorActivitiesViewItem] = useState(); const [isOpen, setIsOpen] = useState(false); @@ -83,23 +95,41 @@ export default function SponsorActivities(props: Props) { return datetime2; }; + const yearPeriods = props.yearPeriods; + const [selectedYear, setSelectedYear] = useState( + yearPeriods + ? String(yearPeriods[yearPeriods.length - 1].year) + : String(new Date().getFullYear()), + ); + + const getSponsorActivities = async () => { + const getSponsorActivitiesViewUrlByYear = + process.env.CSR_API_URI + '/activities/details/' + selectedYear; + const getSponsorActivitiesByYears = await get(getSponsorActivitiesViewUrlByYear); + setSponsorActivitiesViews(getSponsorActivitiesByYears); + console.log(getSponsorActivitiesViewUrlByYear); + }; + const currentYear = new Date().getFullYear().toString(); - const [selectedYear, setSelectedYear] = useState(currentYear); const [selectedIsDone, setSelectedIsDone] = useState('all'); const [selectedSort, setSelectedSort] = useState('default'); const sortedAndFilteredSponsorActivitiesViews = useMemo(() => { - let filteredActivities = props.sponsorActivitiesView.filter((sponsorActivitiesItem) => { - return sponsorActivitiesItem.sponsorActivity.createdAt?.includes(selectedYear); - }); + let filteredActivities = sponsorActivities; switch (selectedIsDone) { case 'false': + if (!Array.isArray(filteredActivities)) { + return []; + } filteredActivities = filteredActivities.filter((sponsorActivitiesItem) => { return !sponsorActivitiesItem.sponsorActivity.isDone; }); break; case 'true': + if (!Array.isArray(filteredActivities)) { + return []; + } filteredActivities = filteredActivities.filter((sponsorActivitiesItem) => { return sponsorActivitiesItem.sponsorActivity.isDone; }); @@ -110,6 +140,9 @@ export default function SponsorActivities(props: Props) { switch (selectedSort) { case 'createDesSort': + if (!Array.isArray(filteredActivities)) { + return []; + } return [...filteredActivities].sort( (firstObject: SponsorActivityView, secondObject: SponsorActivityView) => new Date(firstObject.sponsorActivity.createdAt || 0).getTime() > @@ -118,6 +151,9 @@ export default function SponsorActivities(props: Props) { : 1, ); case 'updateSort': + if (!Array.isArray(filteredActivities)) { + return []; + } return [...filteredActivities].sort( (firstObject: SponsorActivityView, secondObject: SponsorActivityView) => new Date(firstObject.sponsorActivity.updatedAt || 0).getTime() > @@ -126,6 +162,9 @@ export default function SponsorActivities(props: Props) { : -1, ); case 'updateDesSort': + if (!Array.isArray(filteredActivities)) { + return []; + } return [...filteredActivities].sort( (firstObject: SponsorActivityView, secondObject: SponsorActivityView) => new Date(firstObject.sponsorActivity.updatedAt || 0).getTime() > @@ -134,6 +173,9 @@ export default function SponsorActivities(props: Props) { : 1, ); case 'priceSort': + if (!Array.isArray(filteredActivities)) { + return []; + } return [...filteredActivities].sort( (firstObject: SponsorActivityView, secondObject: SponsorActivityView) => firstObject.styleDetail.reduce((sum, style) => sum + style.sponsorStyle.price, 0) > @@ -142,6 +184,9 @@ export default function SponsorActivities(props: Props) { : -1, ); case 'priceDesSort': + if (!Array.isArray(filteredActivities)) { + return []; + } return [...filteredActivities].sort( (firstObject: SponsorActivityView, secondObject: SponsorActivityView) => firstObject.styleDetail.reduce((sum, style) => sum + style.sponsorStyle.price, 0) > @@ -152,7 +197,7 @@ export default function SponsorActivities(props: Props) { default: return filteredActivities; } - }, [props, selectedYear, selectedIsDone, selectedSort]); + }, [props, selectedYear, selectedIsDone, selectedSort, getSponsorActivities]); const TotalTransportationFee = useMemo(() => { let totalFee = 0; @@ -183,6 +228,10 @@ export default function SponsorActivities(props: Props) { return totalFee; }, [sortedAndFilteredSponsorActivitiesViews]); + useEffect(() => { + getSponsorActivities(); + }, [selectedYear]); + return ( @@ -201,9 +250,14 @@ export default function SponsorActivities(props: Props) { defaultValue={currentYear} onChange={(e) => setSelectedYear(e.target.value)} > - - - + {props.yearPeriods && + props.yearPeriods.map((year) => { + return ( + + ); + })} +
-
+
単価
- +
-
+
個数
- +
-
+
詳細
- +
-
+
URL
- +
From 6476b987e55aa7904dc7201fba8710c82e9bd839 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 7 Mar 2024 12:16:27 +0900 Subject: [PATCH 012/113] =?UTF-8?q?[fix]post=E3=82=92=E6=9C=80=E5=BE=8C?= =?UTF-8?q?=E3=81=AB=E3=81=BE=E3=81=A8=E3=82=81=E3=81=A6=E8=A1=8C=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchaseorders/PurchaseItemNumModal.tsx | 6 ++--- .../purchaseorders/PurchaseOrderAddModal.tsx | 23 ++++++++++++++----- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx b/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx index 46cec8951..81aa2e12c 100644 --- a/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx +++ b/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx @@ -73,9 +73,6 @@ export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { // 購入申請の登録と登録した購入申請のIDを使って購入物品を更新 const submit = async (data: PurchaseOrder) => { - const addPurchaseOrderUrl = process.env.CSR_API_URI + '/purchaseorders'; - const postRes: PurchaseOrder = await post(addPurchaseOrderUrl, data); - const purchaseOrderId = postRes.id; const initialPurchaseItemList = []; for (let i = 0; i < Number(purchaseItemNum.value); i++) { const initialPurchaseItem: PurchaseItem = { @@ -85,7 +82,7 @@ export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { quantity: 0, detail: '', url: '', - purchaseOrderID: purchaseOrderId ? purchaseOrderId : 0, + purchaseOrderID: 0, financeCheck: false, createdAt: '', updatedAt: '', @@ -162,6 +159,7 @@ export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { onClose={onClose} setFormDataList={setFormDataList} formDataList={formDataList} + purchaseOrder={formData} /> )} diff --git a/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx b/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx index 2fe52c6b0..fd3e8782b 100644 --- a/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx +++ b/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx @@ -5,6 +5,7 @@ import { RiExternalLinkLine, RiFileCopyLine } from 'react-icons/ri'; import { RiArrowDropRightLine } from 'react-icons/ri'; import { del } from '@api/api_methods'; +import { post as postOrder } from '@api/purchaseOrder'; import { post } from '@api/purchaseItem'; import { PrimaryButton, @@ -15,7 +16,7 @@ import { Stepper, Tooltip, } from '@components/common'; -import { PurchaseItem } from '@type/common'; +import { PurchaseItem, PurchaseOrder } from '@type/common'; interface ModalProps { purchaseItemNum: PurchaseItemNum; @@ -24,6 +25,7 @@ interface ModalProps { onClose: () => void; setFormDataList: (formDataList: PurchaseItem[]) => void; formDataList: PurchaseItem[]; + purchaseOrder: PurchaseOrder; } interface PurchaseItemNum { @@ -62,15 +64,24 @@ export default function AddModal(props: ModalProps) { ); }; - const addPurchaseItem = async (data: PurchaseItem[]) => { + const submitOrderAndItems = async ( + purchaseOrder: PurchaseOrder, + purchaseItems: PurchaseItem[], + ) => { + const addPurchaseOrderUrl = process.env.CSR_API_URI + '/purchaseorders'; + const postRes: PurchaseOrder = await postOrder(addPurchaseOrderUrl, purchaseOrder); + const purchaseOrderId = postRes.id || 0; + const purchaseItemsAddOrderInfo = purchaseItems.map((item) => { + return { ...item, purchaseOrderID: purchaseOrderId }; + }); const addPurchaseItemUrl = process.env.CSR_API_URI + '/purchaseitems'; - data.map(async (item) => { + purchaseItemsAddOrderInfo.map(async (item) => { await post(addPurchaseItemUrl, item); }); }; - const submit = async (formDataList: PurchaseItem[]) => { - addPurchaseItem(formDataList); + const submit = async (purchaseOrder: PurchaseOrder, formDataList: PurchaseItem[]) => { + submitOrderAndItems(purchaseOrder, formDataList); props.onClose(); props.numModalOnClose(); router.reload(); @@ -286,7 +297,7 @@ export default function AddModal(props: ModalProps) { { - submit(props.formDataList); + submit(props.purchaseOrder, props.formDataList); }} > 登録 From 19cffbb755afb76f1cf9718f4edb0be626385d3e Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 7 Mar 2024 12:17:31 +0900 Subject: [PATCH 013/113] =?UTF-8?q?[fix]=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?=E5=89=8A=E9=99=A4=E9=96=A2=E6=95=B0=E3=81=AE=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/purchaseorders/PurchaseOrderAddModal.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx b/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx index fd3e8782b..f15422cf4 100644 --- a/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx +++ b/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx @@ -48,12 +48,6 @@ export default function AddModal(props: ModalProps) { const [isDone, setIsDone] = useState(false); const router = useRouter(); - const deletePurchaseOrder = async () => { - const deletePurchaseOrderUrl = - process.env.CSR_API_URI + '/purchaseorders/' + props.formDataList[0].purchaseOrderID; - await del(deletePurchaseOrderUrl); - }; - const handler = (stepNumber: number, input: string) => (e: React.ChangeEvent | React.ChangeEvent) => { @@ -257,7 +251,6 @@ export default function AddModal(props: ModalProps) {
{ - deletePurchaseOrder(); props.onClose(); props.numModalOnClose(); }} From a38dfce77cd164e190c6bc7e7f6e459757e5a4b0 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 7 Mar 2024 03:22:36 +0000 Subject: [PATCH 014/113] formatted by workflow --- .../src/components/purchaseorders/PurchaseItemNumModal.tsx | 1 - .../src/components/purchaseorders/PurchaseOrderAddModal.tsx | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx b/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx index 81aa2e12c..35eada2bd 100644 --- a/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx +++ b/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx @@ -2,7 +2,6 @@ import React, { useState } from 'react'; import { useRecoilState } from 'recoil'; import { userAtom } from '@/store/atoms'; -import { post } from '@api/purchaseOrder'; import { CloseButton, Input, Modal, PrimaryButton, Select } from '@components/common'; import AddModal from '@components/purchaseorders/PurchaseOrderAddModal'; import { PurchaseItem, PurchaseOrder, Expense } from '@type/common'; diff --git a/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx b/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx index f15422cf4..fcda8252b 100644 --- a/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx +++ b/view/next-project/src/components/purchaseorders/PurchaseOrderAddModal.tsx @@ -4,9 +4,8 @@ import React, { useState } from 'react'; import { RiExternalLinkLine, RiFileCopyLine } from 'react-icons/ri'; import { RiArrowDropRightLine } from 'react-icons/ri'; -import { del } from '@api/api_methods'; -import { post as postOrder } from '@api/purchaseOrder'; import { post } from '@api/purchaseItem'; +import { post as postOrder } from '@api/purchaseOrder'; import { PrimaryButton, OutlinePrimaryButton, From 99888f6d4d56e2b44756e9f69aa71c40f2ab02c7 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 7 Mar 2024 19:05:18 +0900 Subject: [PATCH 015/113] =?UTF-8?q?[feat]=20purchaseItem=E3=81=8C=E7=84=A1?= =?UTF-8?q?=E3=81=84=E5=A0=B4=E5=90=88=E3=81=AE=E8=A1=A8=E7=A4=BA=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/utils/createPurchaseOrderPdf.ts | 236 +++++++++++------- 1 file changed, 149 insertions(+), 87 deletions(-) diff --git a/view/next-project/src/utils/createPurchaseOrderPdf.ts b/view/next-project/src/utils/createPurchaseOrderPdf.ts index 28bd39d89..bf2873f4e 100644 --- a/view/next-project/src/utils/createPurchaseOrderPdf.ts +++ b/view/next-project/src/utils/createPurchaseOrderPdf.ts @@ -321,82 +321,11 @@ export const createPurchasOrderFormPdf = async (purchaseOrdersViews: PurchaseOrd font: fontData, }); let sum = 0; - purchaseOrdersViews.purchaseItem.map((item, index, arr) => { - page.drawRectangle({ - x: 22, - y: height - (tableHight + 20 * (1 + index)), - width: rectangleWidth, - height: 20, - borderColor: rgb(0, 0, 0), - borderWidth: 1, - }); - for (let i = 0; i < 3; i++) { - page.drawRectangle({ - x: 22 + rectangleWidth + i * rectangleWidth2, - y: height - (tableHight + 20 * (1 + index)), - width: rectangleWidth2, - height: 20, - borderColor: rgb(0, 0, 0), - borderWidth: 1, - }); - } - for (let i = 0; i < 2; i++) { - page.drawRectangle({ - x: 22 + rectangleWidth + 3 * rectangleWidth2 + i * rectangleWidth, - y: height - (tableHight + 20 * (1 + index)), - width: rectangleWidth, - height: 20, - borderColor: rgb(0, 0, 0), - borderWidth: 1, - }); - } - page.drawRectangle({ - x: 22 + 3 * rectangleWidth + 3 * rectangleWidth2, - y: height - (tableHight + 20 * (1 + index)), - width: 20, - height: 20, - borderColor: rgb(0, 0, 0), - borderWidth: 1, - }); - const itemName = truncateString(item.item, 14, 24); - const itemFontSize = fontSizeFunc(item.item); - page.drawText(itemName, { - x: (rectangleWidth - itemName.length * itemFontSize) / 2 + 22, - y: height - (tableTextHight + 20 * (1 + index)) + 2, - size: fontSizes[2], - font: fontData, - }); - page.drawText(String(item.price), { - x: 18 + rectangleWidth + rectangleWidth2 - String(item.price).length * 7, - y: height - (tableTextHight + 20 * (1 + index)), - size: fontSizes[0], - font: fontData, - }); - page.drawText(String(item.quantity), { - x: 22 + rectangleWidth + rectangleWidth2 + rectangleWidth2 / 2 - 5, - y: height - (tableTextHight + 20 * (1 + index)), - size: fontSizes[0], - font: fontData, - }); - sum += item.price * item.quantity; - page.drawText(String(item.price * item.quantity), { - x: 18 + rectangleWidth + 3 * rectangleWidth2 - String(item.price * item.quantity).length * 7, - y: height - (tableTextHight + 20 * (1 + index)) + 2, - size: fontSizes[0], - font: fontData, - }); - const detail = truncateString(item.detail, 14, 24); - page.drawText(detail, { - x: 24 + 2 * rectangleWidth + 3 * rectangleWidth2, - y: height - (tableTextHight + 20 * (1 + index)), - size: fontSizes[2], - font: fontData, - }); - //合計の処理 - if (index === arr.length - 1) { + if (purchaseOrdersViews.purchaseItem) { + purchaseOrdersViews.purchaseItem.map((item, index, arr) => { page.drawRectangle({ x: 22, - y: height - (tableHight + 20 * (2 + index)), + y: height - (tableHight + 20 * (1 + index)), width: rectangleWidth, height: 20, borderColor: rgb(0, 0, 0), @@ -405,7 +334,7 @@ export const createPurchasOrderFormPdf = async (purchaseOrdersViews: PurchaseOrd for (let i = 0; i < 3; i++) { page.drawRectangle({ x: 22 + rectangleWidth + i * rectangleWidth2, - y: height - (tableHight + 20 * (2 + index)), + y: height - (tableHight + 20 * (1 + index)), width: rectangleWidth2, height: 20, borderColor: rgb(0, 0, 0), @@ -415,7 +344,7 @@ export const createPurchasOrderFormPdf = async (purchaseOrdersViews: PurchaseOrd for (let i = 0; i < 2; i++) { page.drawRectangle({ x: 22 + rectangleWidth + 3 * rectangleWidth2 + i * rectangleWidth, - y: height - (tableHight + 20 * (2 + index)), + y: height - (tableHight + 20 * (1 + index)), width: rectangleWidth, height: 20, borderColor: rgb(0, 0, 0), @@ -424,32 +353,165 @@ export const createPurchasOrderFormPdf = async (purchaseOrdersViews: PurchaseOrd } page.drawRectangle({ x: 22 + 3 * rectangleWidth + 3 * rectangleWidth2, - y: height - (tableHight + 20 * (2 + index)), + y: height - (tableHight + 20 * (1 + index)), width: 20, height: 20, borderColor: rgb(0, 0, 0), borderWidth: 1, }); - page.drawText('合計', { - x: 22 + rectangleWidth + rectangleWidth2 + 17, - y: height - (tableTextHight + 20 * (2 + index)), + const itemName = truncateString(item.item, 14, 24); + const itemFontSize = fontSizeFunc(item.item); + page.drawText(itemName, { + x: (rectangleWidth - itemName.length * itemFontSize) / 2 + 22, + y: height - (tableTextHight + 20 * (1 + index)) + 2, + size: fontSizes[2], + font: fontData, + }); + page.drawText(String(item.price), { + x: 18 + rectangleWidth + rectangleWidth2 - String(item.price).length * 7, + y: height - (tableTextHight + 20 * (1 + index)), size: fontSizes[0], font: fontData, }); - page.drawText(String(sum), { - x: 18 + rectangleWidth + 3 * rectangleWidth2 - String(sum).length * 7, - y: height - (tableTextHight + 20 * (2 + index)), + page.drawText(String(item.quantity), { + x: 22 + rectangleWidth + rectangleWidth2 + rectangleWidth2 / 2 - 5, + y: height - (tableTextHight + 20 * (1 + index)), size: fontSizes[0], font: fontData, }); - page.drawText('以上', { - x: width - 65, - y: height - (tableTextHight + 20 * (3 + index)), + sum += item.price * item.quantity; + page.drawText(String(item.price * item.quantity), { + x: 18 + rectangleWidth + 3 * rectangleWidth2 - String(item.price * item.quantity).length * 7, + y: height - (tableTextHight + 20 * (1 + index)) + 2, size: fontSizes[0], font: fontData, }); + const detail = truncateString(item.detail, 14, 24); + page.drawText(detail, { + x: 24 + 2 * rectangleWidth + 3 * rectangleWidth2, + y: height - (tableTextHight + 20 * (1 + index)), + size: fontSizes[2], + font: fontData, + }); + //合計の処理 + if (index === arr.length - 1) { + page.drawRectangle({ + x: 22, + y: height - (tableHight + 20 * (2 + index)), + width: rectangleWidth, + height: 20, + borderColor: rgb(0, 0, 0), + borderWidth: 1, + }); + for (let i = 0; i < 3; i++) { + page.drawRectangle({ + x: 22 + rectangleWidth + i * rectangleWidth2, + y: height - (tableHight + 20 * (2 + index)), + width: rectangleWidth2, + height: 20, + borderColor: rgb(0, 0, 0), + borderWidth: 1, + }); + } + for (let i = 0; i < 2; i++) { + page.drawRectangle({ + x: 22 + rectangleWidth + 3 * rectangleWidth2 + i * rectangleWidth, + y: height - (tableHight + 20 * (2 + index)), + width: rectangleWidth, + height: 20, + borderColor: rgb(0, 0, 0), + borderWidth: 1, + }); + } + page.drawRectangle({ + x: 22 + 3 * rectangleWidth + 3 * rectangleWidth2, + y: height - (tableHight + 20 * (2 + index)), + width: 20, + height: 20, + borderColor: rgb(0, 0, 0), + borderWidth: 1, + }); + page.drawText('合計', { + x: 22 + rectangleWidth + rectangleWidth2 + 17, + y: height - (tableTextHight + 20 * (2 + index)), + size: fontSizes[0], + font: fontData, + }); + page.drawText(String(sum), { + x: 18 + rectangleWidth + 3 * rectangleWidth2 - String(sum).length * 7, + y: height - (tableTextHight + 20 * (2 + index)), + size: fontSizes[0], + font: fontData, + }); + page.drawText('以上', { + x: width - 65, + y: height - (tableTextHight + 20 * (3 + index)), + size: fontSizes[0], + font: fontData, + }); + } + }); + } else { + const totalY = height - (tableHight + 20 * 1); + page.drawRectangle({ + x: 22, + y: totalY, + width: rectangleWidth, + height: 20, + borderColor: rgb(0, 0, 0), + borderWidth: 1, + }); + for (let i = 0; i < 3; i++) { + page.drawRectangle({ + x: 22 + rectangleWidth + i * rectangleWidth2, + y: totalY, + width: rectangleWidth2, + height: 20, + borderColor: rgb(0, 0, 0), + borderWidth: 1, + }); } - }); + for (let i = 0; i < 2; i++) { + page.drawRectangle({ + x: 22 + rectangleWidth + 3 * rectangleWidth2 + i * rectangleWidth, + y: totalY, + width: rectangleWidth, + height: 20, + borderColor: rgb(0, 0, 0), + borderWidth: 1, + }); + } + page.drawRectangle({ + x: 22 + 3 * rectangleWidth + 3 * rectangleWidth2, + y: totalY, + width: 20, + height: 20, + borderColor: rgb(0, 0, 0), + borderWidth: 1, + }); + + page.drawText('合計', { + x: 22 + rectangleWidth + rectangleWidth2 + 17, + y: totalY + 2, + size: fontSizes[0], + font: fontData, + }); + + page.drawText('0', { + x: 18 + rectangleWidth + 3 * rectangleWidth2 - String(0).length * 7, + y: totalY + 2, + size: fontSizes[0], + font: fontData, + }); + + page.drawText('以上', { + x: width - 65, + y: totalY - 20, + size: fontSizes[0], + font: fontData, + }); + } + // 内容の作成ここまで // 生成されたPDFデータを取得 const pdfBytes = await pdfDoc.save(); From c520d4e77d3ace61044a75479885e565fb5a6390 Mon Sep 17 00:00:00 2001 From: TkymHrt Date: Fri, 8 Mar 2024 04:39:37 +0000 Subject: [PATCH 016/113] formatted by workflow --- view/next-project/src/utils/createPurchaseOrderPdf.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/view/next-project/src/utils/createPurchaseOrderPdf.ts b/view/next-project/src/utils/createPurchaseOrderPdf.ts index bf2873f4e..0dfeb8840 100644 --- a/view/next-project/src/utils/createPurchaseOrderPdf.ts +++ b/view/next-project/src/utils/createPurchaseOrderPdf.ts @@ -381,7 +381,8 @@ export const createPurchasOrderFormPdf = async (purchaseOrdersViews: PurchaseOrd }); sum += item.price * item.quantity; page.drawText(String(item.price * item.quantity), { - x: 18 + rectangleWidth + 3 * rectangleWidth2 - String(item.price * item.quantity).length * 7, + x: + 18 + rectangleWidth + 3 * rectangleWidth2 - String(item.price * item.quantity).length * 7, y: height - (tableTextHight + 20 * (1 + index)) + 2, size: fontSizes[0], font: fontData, From d9d3d4f2b681395d7d4c4d7f13fa4e88ccb31a16 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Fri, 8 Mar 2024 16:44:56 +0900 Subject: [PATCH 017/113] =?UTF-8?q?[fix]=20=E7=B7=A8=E9=9B=86=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E3=81=A7formDataList=E3=81=8Cnull=E3=81=AE=E6=99=82?= =?UTF-8?q?=E3=81=AE=E6=9D=A1=E4=BB=B6=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/purchaseorders/EditModal.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/view/next-project/src/components/purchaseorders/EditModal.tsx b/view/next-project/src/components/purchaseorders/EditModal.tsx index 133c64da2..0af7c15c2 100644 --- a/view/next-project/src/components/purchaseorders/EditModal.tsx +++ b/view/next-project/src/components/purchaseorders/EditModal.tsx @@ -143,10 +143,14 @@ export default function EditModal(props: ModalProps) {

購入物品の修正

{/* 購入物品があればステッパで表示、なければないと表示 */} - {formDataList.length > 0 && ( + {formDataList && formDataList.length > 0 ? ( {!isDone && <>{content(formDataList[activeStep - 1])}} + ) : ( +

+ 購入物品が存在しません。項目を削除した上で、再登録してください。 +

)} {isDone ? (
@@ -200,7 +204,7 @@ export default function EditModal(props: ModalProps) {
) : (
- {formDataList.length > 0 && ( + {formDataList && formDataList.length > 0 && ( <> {activeStep > 1 && ( 戻る From 109689d4ef5dbf9809b082c077d7a5b49491166f Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Mon, 18 Mar 2024 19:01:03 +0900 Subject: [PATCH 018/113] =?UTF-8?q?minio=E5=B0=8E=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +++- docker-compose.yml | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index a4f08efae..11a92d878 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,6 @@ api/tmp # cloudflare web/**/*.json -web/**/cert.pem \ No newline at end of file +web/**/cert.pem + +tmp/* diff --git a/docker-compose.yml b/docker-compose.yml index a74a94277..ebc0a5277 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3" services: db: image: mysql:8.0 @@ -11,7 +11,7 @@ services: MYSQL_USER: finansu MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: root - TZ: 'Asia/Tokyo' + TZ: "Asia/Tokyo" ports: - "3306:3306" restart: always @@ -44,3 +44,14 @@ services: db: condition: service_started + minio: + image: minio/minio:latest + ports: + - "9000:9000" + - "9001:9001" + volumes: + - ./tmp/minio/data:/data + command: "server /data --console-address :9001" + environment: + MINIO_ROOT_USER: user + MINIO_ROOT_PASSWORD: password From 8772c0888159929ea2520cee97f131c4bcf4518e Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Mon, 18 Mar 2024 21:24:49 +0900 Subject: [PATCH 019/113] =?UTF-8?q?minio=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=82=A2=E3=83=83=E3=83=97=E3=83=AD=E3=83=BC=E3=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 6 - view/Dockerfile | 2 +- view/next-project/package-lock.json | 1635 ++++++++++++++++- view/next-project/package.json | 5 + .../public/images/docker-copose.png | Bin 0 -> 220783 bytes .../common/InputImage/Input.module.css | 5 + .../common/InputImage/InputImage.tsx | 29 + .../src/components/common/InputImage/index.ts | 1 + .../src/components/common/index.ts | 1 + .../src/pages/api/img/icons8-mysql-240.png | Bin 0 -> 5853 bytes view/next-project/src/pages/api/minio.tsx | 73 + .../src/pages/miniotest/index.tsx | 101 + 12 files changed, 1797 insertions(+), 61 deletions(-) delete mode 100644 package-lock.json create mode 100644 view/next-project/public/images/docker-copose.png create mode 100644 view/next-project/src/components/common/InputImage/Input.module.css create mode 100644 view/next-project/src/components/common/InputImage/InputImage.tsx create mode 100644 view/next-project/src/components/common/InputImage/index.ts create mode 100644 view/next-project/src/pages/api/img/icons8-mysql-240.png create mode 100644 view/next-project/src/pages/api/minio.tsx create mode 100644 view/next-project/src/pages/miniotest/index.tsx diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index f9a707bea..000000000 --- a/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "FinanSu", - "lockfileVersion": 2, - "requires": true, - "packages": {} -} diff --git a/view/Dockerfile b/view/Dockerfile index 790b52e59..58b970642 100644 --- a/view/Dockerfile +++ b/view/Dockerfile @@ -1,5 +1,5 @@ # ベースイメージの作成 -FROM node:16.13.0 +FROM node:20 # コンテナ内で作業するディレクトリを指定 WORKDIR /app/next-project COPY ./ /app diff --git a/view/next-project/package-lock.json b/view/next-project/package-lock.json index 0d9377177..9fd67a21f 100644 --- a/view/next-project/package-lock.json +++ b/view/next-project/package-lock.json @@ -12,11 +12,15 @@ "@emotion/styled": "^11.6.0", "@fontsource/noto-sans-jp": "^4.5.2", "@pdf-lib/fontkit": "^1.1.1", + "@types/formidable": "^3.4.5", "@types/react-select": "^5.0.1", "clsx": "^1.2.1", "date-fns": "^2.30.0", + "formidable": "^3.5.1", "framer-motion": "^5.3.0", + "fs": "^0.0.1-security", "lorem-ipsum": "^2.0.4", + "minio": "^7.1.3", "next": "^13.0.5", "node-fetch": "^3.1.0", "pdf-lib": "^1.17.1", @@ -24,6 +28,7 @@ "react-dom": "^18.0.0", "react-hook-form": "^7.31.1", "react-icons": "^4.3.1", + "react-pdf": "^7.7.1", "react-router-dom": "^6.0.2", "react-select": "^5.7.3", "recoil": "^0.7.6", @@ -1645,6 +1650,46 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/@next/env": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.2.tgz", @@ -1901,6 +1946,14 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/formidable": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-3.4.5.tgz", + "integrity": "sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -1929,8 +1982,7 @@ "node_modules/@types/node": { "version": "16.18.30", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.30.tgz", - "integrity": "sha512-Kmp/wBZk19Dn7uRiol8kF8agnf8m0+TU9qIwyfPmXglVxMlmiIz0VQSMw5oFgwhmD2aKTlfBIO5FtsVj3y7hKQ==", - "dev": true + "integrity": "sha512-Kmp/wBZk19Dn7uRiol8kF8agnf8m0+TU9qIwyfPmXglVxMlmiIz0VQSMw5oFgwhmD2aKTlfBIO5FtsVj3y7hKQ==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -2241,6 +2293,18 @@ "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz", "integrity": "sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA==" }, + "node_modules/@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, "node_modules/acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -2262,6 +2326,18 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2282,7 +2358,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } @@ -2319,6 +2395,25 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -2440,12 +2535,22 @@ "get-intrinsic": "^1.1.3" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, "node_modules/ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, "node_modules/autoprefixer": { "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", @@ -2483,7 +2588,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2545,6 +2649,14 @@ "node": ">=8" } }, + "node_modules/block-stream2": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", + "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", + "dependencies": { + "readable-stream": "^3.4.0" + } + }, "node_modules/bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -2577,6 +2689,11 @@ "node": ">=8" } }, + "node_modules/browser-or-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" + }, "node_modules/browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", @@ -2605,6 +2722,14 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, "node_modules/bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -2635,7 +2760,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -2679,6 +2803,21 @@ } ] }, + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2732,6 +2871,15 @@ "node": ">= 6" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "optional": true, + "engines": { + "node": ">=10" + } + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -2763,6 +2911,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/color2k": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.2.tgz", @@ -2786,6 +2943,12 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "optional": true + }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -2890,7 +3053,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "devOptional": true, "dependencies": { "ms": "2.1.2" }, @@ -2903,6 +3066,26 @@ } } }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "optional": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/deep-equal": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", @@ -3000,11 +3183,43 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "optional": true + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -3790,6 +4005,27 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-xml-parser": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.5.tgz", + "integrity": "sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -3843,6 +4079,14 @@ "node": ">=8" } }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", @@ -3898,7 +4142,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -3914,6 +4157,19 @@ "node": ">=12.20.0" } }, + "node_modules/formidable": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", + "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, "node_modules/fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", @@ -3994,6 +4250,35 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4044,11 +4329,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -4107,7 +4411,7 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, + "devOptional": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4188,7 +4492,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -4270,7 +4573,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -4282,7 +4584,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -4293,6 +4594,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "optional": true + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "engines": { + "node": ">=8" + } + }, "node_modules/hey-listen": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", @@ -4306,6 +4621,19 @@ "react-is": "^16.7.0" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "optional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -4384,11 +4712,18 @@ "loose-envify": "^1.0.0" } }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4462,7 +4797,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -4519,6 +4853,29 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4684,7 +5041,6 @@ "version": "1.1.10", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -4824,6 +5180,11 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/json-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-stream/-/json-stream-1.0.0.tgz", + "integrity": "sha512-H/ZGY0nIAg3QcOwE1QN/rK/Fa7gJn7Ii5obwp6zyPO4xiPNwpIMjqy2gwjBEGqzkF/vSWEIBQCBuN19hYiL6Qg==" + }, "node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", @@ -4905,6 +5266,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -4946,7 +5312,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, + "devOptional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4954,11 +5320,67 @@ "node": ">=10" } }, + "node_modules/make-cancellable-promise": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz", + "integrity": "sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww==", + "funding": { + "url": "https://github.com/wojtekmaj/make-cancellable-promise?sponsor=1" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "optional": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "optional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-event-props": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.2.tgz", + "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==", + "funding": { + "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" + } + }, "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, + "node_modules/merge-refs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.2.tgz", + "integrity": "sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==", + "funding": { + "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -4985,10 +5407,29 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { "node": ">=12" @@ -4997,6 +5438,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "optional": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5017,11 +5470,81 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minio": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minio/-/minio-7.1.3.tgz", + "integrity": "sha512-xPrLjWkTT5E7H7VnzOjF//xBp9I40jYB4aWhb2xTFopXXfw+Wo82DDWngdUju7Doy3Wk7R8C4LAgwhLHHnf0wA==", + "dependencies": { + "async": "^3.2.4", + "block-stream2": "^2.1.0", + "browser-or-node": "^2.1.1", + "buffer-crc32": "^0.2.13", + "fast-xml-parser": "^4.2.2", + "ipaddr.js": "^2.0.1", + "json-stream": "^1.0.0", + "lodash": "^4.17.21", + "mime-types": "^2.1.35", + "query-string": "^7.1.3", + "through2": "^4.0.2", + "web-encoding": "^1.1.5", + "xml": "^1.0.1", + "xml2js": "^0.5.0" + }, + "engines": { + "node": "^16 || ^18 || >=20" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "devOptional": true }, "node_modules/mz": { "version": "2.7.0", @@ -5033,6 +5556,12 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nan": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "optional": true + }, "node_modules/nanoid": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", @@ -5179,6 +5708,21 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -5223,6 +5767,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "optional": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -5512,6 +6068,27 @@ "node": ">=8" } }, + "node_modules/path2d": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.1.1.tgz", + "integrity": "sha512-/+S03c8AGsDYKKBtRDqieTJv2GlkMb0bWjnqOgtF6MkjdUQ9a8ARAtxWf9NgKLGm2+WQr6+/tqJdU8HNGsIDoA==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/path2d-polyfill": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.1.1.tgz", + "integrity": "sha512-4Rka5lN+rY/p0CdD8+E+BFv51lFaFvJOrlOhyQ+zjzyQrzyh3ozmxd1vVGGDdIbUFSBtIZLSnspxTgPT0iJhvA==", + "optional": true, + "dependencies": { + "path2d": "0.1.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/pdf-lib": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz", @@ -5528,6 +6105,18 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/pdfjs-dist": { + "version": "3.11.174", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-3.11.174.tgz", + "integrity": "sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA==", + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "canvas": "^2.11.2", + "path2d-polyfill": "^2.0.1" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -5730,6 +6319,23 @@ "node": ">=6" } }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5847,6 +6453,43 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/react-pdf": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-7.7.1.tgz", + "integrity": "sha512-cbbf/PuRtGcPPw+HLhMI1f6NSka8OJgg+j/yPWTe95Owf0fK6gmVY7OXpTxMeh92O3T3K3EzfE0ML0eXPGwR5g==", + "dependencies": { + "clsx": "^2.0.0", + "dequal": "^2.0.3", + "make-cancellable-promise": "^1.3.1", + "make-event-props": "^1.6.0", + "merge-refs": "^1.2.1", + "pdfjs-dist": "3.11.174", + "prop-types": "^15.6.2", + "tiny-invariant": "^1.0.0", + "warning": "^4.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-pdf?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-pdf/node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, "node_modules/react-remove-scroll": { "version": "2.5.6", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", @@ -5999,6 +6642,19 @@ "pify": "^2.3.0" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -6096,7 +6752,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, + "devOptional": true, "dependencies": { "glob": "^7.1.3" }, @@ -6233,6 +6889,25 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -6247,6 +6922,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -6259,7 +6939,7 @@ "version": "7.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", - "dev": true, + "devOptional": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -6270,6 +6950,12 @@ "node": ">=10" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "optional": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6309,7 +6995,38 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "devOptional": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "optional": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } }, "node_modules/slash": { "version": "3.0.0", @@ -6336,6 +7053,14 @@ "node": ">=0.10.0" } }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, "node_modules/stop-iteration-iterator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", @@ -6356,6 +7081,42 @@ "node": ">=10.0.0" } }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "optional": true + }, "node_modules/string.prototype.matchall": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", @@ -6424,7 +7185,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "devOptional": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6465,6 +7226,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, "node_modules/style-value-types": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", @@ -6670,6 +7436,23 @@ "node": ">=6" } }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "optional": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -6695,6 +7478,14 @@ "node": ">=0.8" } }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dependencies": { + "readable-stream": "3" + } + }, "node_modules/tiny-invariant": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", @@ -6736,6 +7527,12 @@ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "optional": true + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -6926,11 +7723,42 @@ } } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "dependencies": { + "util": "^0.12.3" + }, + "optionalDependencies": { + "@zxing/text-encoding": "0.9.0" + } + }, "node_modules/web-streams-polyfill": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", @@ -6939,6 +7767,22 @@ "node": ">= 8" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "optional": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "optional": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6989,7 +7833,6 @@ "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -7005,6 +7848,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -7019,11 +7871,36 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "devOptional": true }, "node_modules/yaml": { "version": "1.10.2", @@ -8287,7 +9164,35 @@ } } }, - "@next/env": { + "@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "optional": true, + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "@next/env": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.2.tgz", "integrity": "sha512-Wqvo7lDeS0KGwtwg9TT9wKQ8raelmUxt+TQKWvG/xKfcmDXNOtCuaszcfCF8JzlBG1q0VhpI6CKaRMbVPMDWgw==" @@ -8440,6 +9345,14 @@ "tslib": "^2.4.0" } }, + "@types/formidable": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-3.4.5.tgz", + "integrity": "sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==", + "requires": { + "@types/node": "*" + } + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -8468,8 +9381,7 @@ "@types/node": { "version": "16.18.30", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.30.tgz", - "integrity": "sha512-Kmp/wBZk19Dn7uRiol8kF8agnf8m0+TU9qIwyfPmXglVxMlmiIz0VQSMw5oFgwhmD2aKTlfBIO5FtsVj3y7hKQ==", - "dev": true + "integrity": "sha512-Kmp/wBZk19Dn7uRiol8kF8agnf8m0+TU9qIwyfPmXglVxMlmiIz0VQSMw5oFgwhmD2aKTlfBIO5FtsVj3y7hKQ==" }, "@types/parse-json": { "version": "4.0.0", @@ -8678,6 +9590,18 @@ "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz", "integrity": "sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA==" }, + "@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, "acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -8691,6 +9615,15 @@ "dev": true, "requires": {} }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "optional": true, + "requires": { + "debug": "4" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -8707,7 +9640,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "devOptional": true }, "ansi-styles": { "version": "4.3.0", @@ -8732,6 +9665,22 @@ "picomatch": "^2.0.4" } }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "optional": true + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, "arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -8826,12 +9775,22 @@ "get-intrinsic": "^1.1.3" } }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, "autoprefixer": { "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", @@ -8849,8 +9808,7 @@ "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "axe-core": { "version": "4.7.0", @@ -8893,6 +9851,14 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "block-stream2": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", + "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", + "requires": { + "readable-stream": "^3.4.0" + } + }, "bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -8919,6 +9885,11 @@ "fill-range": "^7.0.1" } }, + "browser-or-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" + }, "browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", @@ -8931,6 +9902,11 @@ "update-browserslist-db": "^1.0.10" } }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, "bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -8952,7 +9928,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -8973,6 +9948,17 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001487.tgz", "integrity": "sha512-83564Z3yWGqXsh2vaH/mhXfEM0wX+NlBCm1jYHOb97TrTWJEmPTccZgeLTPBUUb0PNVo+oomb7wkimZBIERClA==" }, + "canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "optional": true, + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -9008,6 +9994,12 @@ } } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "optional": true + }, "client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -9033,6 +10025,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "optional": true + }, "color2k": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.2.tgz", @@ -9053,6 +10051,12 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "optional": true + }, "convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -9135,11 +10139,25 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "devOptional": true, "requires": { "ms": "2.1.2" } }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "optional": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, "deep-equal": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", @@ -9210,11 +10228,37 @@ "object-keys": "^1.1.1" } }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "optional": true + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + }, + "detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "optional": true + }, "detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -9822,6 +10866,14 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fast-xml-parser": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.5.tgz", + "integrity": "sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ==", + "requires": { + "strnum": "^1.0.5" + } + }, "fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -9856,6 +10908,11 @@ "to-regex-range": "^5.0.1" } }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + }, "find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", @@ -9899,7 +10956,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "requires": { "is-callable": "^1.1.3" } @@ -9912,6 +10968,16 @@ "fetch-blob": "^3.1.2" } }, + "formidable": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", + "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", + "requires": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0" + } + }, "fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", @@ -9973,6 +11039,31 @@ } } }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -10007,11 +11098,27 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "optional": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, "get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -10049,7 +11156,7 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, + "devOptional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10103,7 +11210,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "requires": { "get-intrinsic": "^1.1.3" } @@ -10163,18 +11269,27 @@ "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "optional": true + }, + "hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==" + }, "hey-listen": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", @@ -10188,6 +11303,16 @@ "react-is": "^16.7.0" } }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "optional": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -10248,11 +11373,15 @@ "loose-envify": "^1.0.0" } }, + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" + }, "is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -10304,8 +11433,7 @@ "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { "version": "2.12.0", @@ -10335,6 +11463,20 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "optional": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -10437,7 +11579,6 @@ "version": "1.1.10", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -10542,6 +11683,11 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "json-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-stream/-/json-stream-1.0.0.tgz", + "integrity": "sha512-H/ZGY0nIAg3QcOwE1QN/rK/Fa7gJn7Ii5obwp6zyPO4xiPNwpIMjqy2gwjBEGqzkF/vSWEIBQCBuN19hYiL6Qg==" + }, "json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", @@ -10605,6 +11751,11 @@ "p-locate": "^5.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -10636,16 +11787,49 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, + "devOptional": true, "requires": { "yallist": "^4.0.0" } }, + "make-cancellable-promise": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz", + "integrity": "sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww==" + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "optional": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "optional": true + } + } + }, + "make-event-props": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.2.tgz", + "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==" + }, "memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, + "merge-refs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.2.tgz", + "integrity": "sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==", + "requires": {} + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -10666,12 +11850,31 @@ "picomatch": "^2.3.1" } }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, "mimic-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "optional": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -10686,11 +11889,65 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, + "minio": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minio/-/minio-7.1.3.tgz", + "integrity": "sha512-xPrLjWkTT5E7H7VnzOjF//xBp9I40jYB4aWhb2xTFopXXfw+Wo82DDWngdUju7Doy3Wk7R8C4LAgwhLHHnf0wA==", + "requires": { + "async": "^3.2.4", + "block-stream2": "^2.1.0", + "browser-or-node": "^2.1.1", + "buffer-crc32": "^0.2.13", + "fast-xml-parser": "^4.2.2", + "ipaddr.js": "^2.0.1", + "json-stream": "^1.0.0", + "lodash": "^4.17.21", + "mime-types": "^2.1.35", + "query-string": "^7.1.3", + "through2": "^4.0.2", + "web-encoding": "^1.1.5", + "xml": "^1.0.1", + "xml2js": "^0.5.0" + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "optional": true + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "optional": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "devOptional": true }, "mz": { "version": "2.7.0", @@ -10702,6 +11959,12 @@ "thenify-all": "^1.0.0" } }, + "nan": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "optional": true + }, "nanoid": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", @@ -10775,6 +12038,15 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "optional": true, + "requires": { + "abbrev": "1" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -10803,6 +12075,18 @@ } } }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "optional": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -11002,6 +12286,21 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, + "path2d": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.1.1.tgz", + "integrity": "sha512-/+S03c8AGsDYKKBtRDqieTJv2GlkMb0bWjnqOgtF6MkjdUQ9a8ARAtxWf9NgKLGm2+WQr6+/tqJdU8HNGsIDoA==", + "optional": true + }, + "path2d-polyfill": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.1.1.tgz", + "integrity": "sha512-4Rka5lN+rY/p0CdD8+E+BFv51lFaFvJOrlOhyQ+zjzyQrzyh3ozmxd1vVGGDdIbUFSBtIZLSnspxTgPT0iJhvA==", + "optional": true, + "requires": { + "path2d": "0.1.1" + } + }, "pdf-lib": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz", @@ -11020,6 +12319,15 @@ } } }, + "pdfjs-dist": { + "version": "3.11.174", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-3.11.174.tgz", + "integrity": "sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA==", + "requires": { + "canvas": "^2.11.2", + "path2d-polyfill": "^2.0.1" + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -11146,6 +12454,17 @@ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, + "query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "requires": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -11216,6 +12535,29 @@ "resolved": "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz", "integrity": "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==" }, + "react-pdf": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-7.7.1.tgz", + "integrity": "sha512-cbbf/PuRtGcPPw+HLhMI1f6NSka8OJgg+j/yPWTe95Owf0fK6gmVY7OXpTxMeh92O3T3K3EzfE0ML0eXPGwR5g==", + "requires": { + "clsx": "^2.0.0", + "dequal": "^2.0.3", + "make-cancellable-promise": "^1.3.1", + "make-event-props": "^1.6.0", + "merge-refs": "^1.2.1", + "pdfjs-dist": "3.11.174", + "prop-types": "^15.6.2", + "tiny-invariant": "^1.0.0", + "warning": "^4.0.0" + }, + "dependencies": { + "clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==" + } + } + }, "react-remove-scroll": { "version": "2.5.6", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", @@ -11307,6 +12649,16 @@ "pify": "^2.3.0" } }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -11369,7 +12721,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, + "devOptional": true, "requires": { "glob": "^7.1.3" } @@ -11452,6 +12804,11 @@ "queue-microtask": "^1.2.2" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -11463,6 +12820,11 @@ "is-regex": "^1.1.4" } }, + "sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, "scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -11475,11 +12837,17 @@ "version": "7.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", - "dev": true, + "devOptional": true, "requires": { "lru-cache": "^6.0.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "optional": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -11510,7 +12878,24 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "devOptional": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "optional": true + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "optional": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } }, "slash": { "version": "3.0.0", @@ -11528,6 +12913,11 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, "stop-iteration-iterator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", @@ -11542,6 +12932,38 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "optional": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "optional": true + } + } + }, "string.prototype.matchall": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", @@ -11595,7 +13017,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "devOptional": true, "requires": { "ansi-regex": "^5.0.1" } @@ -11618,6 +13040,11 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, "style-value-types": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", @@ -11750,6 +13177,20 @@ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, + "tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "optional": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -11772,6 +13213,14 @@ "thenify": ">= 3.1.0 < 4" } }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "requires": { + "readable-stream": "3" + } + }, "tiny-invariant": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", @@ -11801,6 +13250,12 @@ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "optional": true + }, "ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -11915,16 +13370,61 @@ "tslib": "^2.0.0" } }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "requires": { + "@zxing/text-encoding": "0.9.0", + "util": "^0.12.3" + } + }, "web-streams-polyfill": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "optional": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "optional": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -11963,7 +13463,6 @@ "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -11973,6 +13472,15 @@ "is-typed-array": "^1.1.10" } }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -11984,11 +13492,30 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" + }, + "xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "devOptional": true }, "yaml": { "version": "1.10.2", diff --git a/view/next-project/package.json b/view/next-project/package.json index a913c6dcc..bf6ea6508 100644 --- a/view/next-project/package.json +++ b/view/next-project/package.json @@ -18,11 +18,15 @@ "@emotion/styled": "^11.6.0", "@fontsource/noto-sans-jp": "^4.5.2", "@pdf-lib/fontkit": "^1.1.1", + "@types/formidable": "^3.4.5", "@types/react-select": "^5.0.1", "clsx": "^1.2.1", "date-fns": "^2.30.0", + "formidable": "^3.5.1", "framer-motion": "^5.3.0", + "fs": "^0.0.1-security", "lorem-ipsum": "^2.0.4", + "minio": "^7.1.3", "next": "^13.0.5", "node-fetch": "^3.1.0", "pdf-lib": "^1.17.1", @@ -30,6 +34,7 @@ "react-dom": "^18.0.0", "react-hook-form": "^7.31.1", "react-icons": "^4.3.1", + "react-pdf": "^7.7.1", "react-router-dom": "^6.0.2", "react-select": "^5.7.3", "recoil": "^0.7.6", diff --git a/view/next-project/public/images/docker-copose.png b/view/next-project/public/images/docker-copose.png new file mode 100644 index 0000000000000000000000000000000000000000..8d9381f7c7fcc523dc6ac00b16a2543e0f1933ff GIT binary patch literal 220783 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

^HKnA#V*g)zdIup36ho1D4xC*m__UHWb_ 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['id']; + value?: string | number; + onChange?: (e: React.ChangeEvent) => void; + children?: React.ReactNode; + type?: string; + datalist?: { + key: string; + data: { id: number; name: string }[]; + }; +} + +const InputImage = forwardRef(({ onChange, id }, ref) => { + const className = 'rounded-full border border-primary-1 py-2 px-4'; + return ( +

+ ); +}); + +export default InputImage; diff --git a/view/next-project/src/components/common/InputImage/index.ts b/view/next-project/src/components/common/InputImage/index.ts new file mode 100644 index 000000000..1f00547bb --- /dev/null +++ b/view/next-project/src/components/common/InputImage/index.ts @@ -0,0 +1 @@ +export { default } from './InputImage'; diff --git a/view/next-project/src/components/common/index.ts b/view/next-project/src/components/common/index.ts index 3518632b1..ac747a9c2 100644 --- a/view/next-project/src/components/common/index.ts +++ b/view/next-project/src/components/common/index.ts @@ -8,6 +8,7 @@ export { default as DeleteButton } from './DeleteButton'; export { default as Dropdown } from './Dropdown'; export { default as EditButton } from './EditButton'; export { default as Input } from './Input'; +export { default as InputImage } from './InputImage'; export { default as Modal } from './Modal'; export { default as OutlinePrimaryButton } from './OutlinePrimaryButton'; export { default as PrimaryButton } from './PrimaryButton'; diff --git a/view/next-project/src/pages/api/img/icons8-mysql-240.png b/view/next-project/src/pages/api/img/icons8-mysql-240.png new file mode 100644 index 0000000000000000000000000000000000000000..f355a7094deb75804d9b303d200a5557c15fd977 GIT binary patch literal 5853 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 YcUt;~{%IR;%zqAbH4PtD-nW1AKk?Z;Z~y=R literal 0 HcmV?d00001 diff --git a/view/next-project/src/pages/api/minio.tsx b/view/next-project/src/pages/api/minio.tsx new file mode 100644 index 000000000..8823f9d02 --- /dev/null +++ b/view/next-project/src/pages/api/minio.tsx @@ -0,0 +1,73 @@ +import fs from 'fs'; +import { NextApiRequest, NextApiResponse } from 'next'; +import { formidable } from 'formidable'; +import * as Minio from 'minio'; + +export const config = { + api: { + bodyParser: false, + }, +}; + +const minioClient = new Minio.Client({ + // endPoint: '100.81.148.25', + endPoint: '192.168.176.1', + port: 9000, + useSSL: false, + accessKey: 'bE5KYqihEcEXMrgkVhZn', + secretKey: 'oQvamjXnAvrsyneZdluX7S49TfRi0na6AO8WNPuL', + // endPoint: process.env.NEXT_PUBLIC_ENDPOINT, + // port: Number(process.env.NEXT_PUBLIC_PORT), + // accessKey: process.env.NEXT_PUBLIC_ACCESS_KEY, + // secretKey: process.env.NEXT_PUBLIC_SECRET_KEY, + // useSSL: false, +}); + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + if (req.method === 'POST') { + const form = formidable(); + const fs = require('fs'); + + form.parse(req, async (err, fields, files: any) => { + if (err) { + throw new Error('Error parsing form'); + } + + const bucketName = 'finansu'; + const fileName = files.file[0].originalFilename; + const file = files.file[0]; + const mimetype = file.mimetype; + const metaData = { + 'Content-Type': mimetype, + }; + + // console.log(bucketName); + console.log(fileName); + console.log(files.file); + // console.log(files.file[0].filepath); + // console.log(mimetype); + + // minioClient.bucketExists('finansu', function (err: any, exists: any) { + // if (err) { + // return console.log(err); + // } + // if (exists) { + // return console.log('Bucket exists.'); + // } + // }); + + try { + const response = await minioClient.putObject( + bucketName, + fileName, + fs.createReadStream(files.file[0].filepath), + metaData, + ); + + res.status(200).json({ response }); + } catch (err) { + throw new Error('Error uploading file (' + err + ')'); + } + }); + } +} diff --git a/view/next-project/src/pages/miniotest/index.tsx b/view/next-project/src/pages/miniotest/index.tsx new file mode 100644 index 000000000..a2455b4c3 --- /dev/null +++ b/view/next-project/src/pages/miniotest/index.tsx @@ -0,0 +1,101 @@ +import MainLayout from '@components/layout/MainLayout/MainLayout'; +import * as Minio from 'minio'; +import React, { useState, useEffect, useRef, InputHTMLAttributes, forwardRef } from 'react'; +import { InputImage, PrimaryButton } from '@/components/common'; +import { Document, Page } from 'react-pdf'; + +type Args = { + file: File | null; +}; + +export const useGetImageUrl = ({ file }: Args) => { + const [imageUrl, setImageUrl] = useState(''); + + useEffect(() => { + if (!file) { + return; + } + + let reader: FileReader | null = new FileReader(); + reader.onloadend = () => { + const base64 = reader && reader.result; + if (base64 && typeof base64 === 'string') { + setImageUrl(base64); + } + }; + reader.readAsDataURL(file); + + return () => { + reader = null; + }; + }, [file]); + + return { + imageUrl, + }; +}; + +interface Props { + number: number; +} + +export const getServerSideProps = async () => { + return { + props: { + number: 1, + }, + }; +}; + +export default function MinioTest(props: Props) { + const fileInputRef = useRef(null); + const [imageFile, setImageFile] = useState(null); + const [uploadImageURL, setUploadImageURL] = useState(''); + + const handleFileChange = (e: React.ChangeEvent) => { + const targetFile = e.target.files?.[0]!; + setImageFile(targetFile); + setUploadImageURL(URL.createObjectURL(targetFile)); + }; + + const submit = async () => { + if (!imageFile) { + return; + } + const formData = new FormData(); + formData.append('file', imageFile); + const fileName = imageFile?.name || ''; + formData.append('fileName', fileName); + + // console.log(...formData.entries()); + + await fetch('/api/minio', { + method: 'POST', + + body: formData, + }) + .then((response) => response.json()) + .then((data) => console.log(data)) + .catch((error) => console.error('Error:', error)); + }; + + return ( + <> +
+ + submit()}> + 送信 + +
+ +
+ {/* + + */} + Picture of the author + + + + + ); +} From 46ddcb2a744b89a1a45a0d14e7104743c181a3bb Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Mon, 18 Mar 2024 22:17:47 +0900 Subject: [PATCH 020/113] =?UTF-8?q?[fix]=20=E7=99=BB=E9=8C=B2=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=81=9F=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE=E5=8F=8D?= =?UTF-8?q?=E6=98=A0=E3=81=A8=E6=9B=B4=E6=96=B0=E3=81=AEUseEffect=E3=82=92?= =?UTF-8?q?=E5=86=8D=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/fund_information/EditModal.tsx | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/view/next-project/src/components/fund_information/EditModal.tsx b/view/next-project/src/components/fund_information/EditModal.tsx index f4ad660cd..a583e51a8 100644 --- a/view/next-project/src/components/fund_information/EditModal.tsx +++ b/view/next-project/src/components/fund_information/EditModal.tsx @@ -30,22 +30,29 @@ export default function EditModal(props: ModalProps) { }); const [departmentID, setDepartmentID] = useState(1); + const [defaultValue, setDefaultValue] = useState(false); useEffect(() => { - const teacher = props.teachers.find((teacher) => teacher.departmentID === departmentID); - if (teacher && teacher.id) { - setFormData({ ...formData, teacherID: teacher.id }); - } - }, [departmentID]); - - useEffect(() => { - const selectedTeacher = props.teachers.find( - (teacher) => teacher.id === props.fundInformation.teacherID, - ); - if (selectedTeacher) { - setDepartmentID(selectedTeacher.departmentID); + if (defaultValue == false) { + const selectedTeacher = props.teachers.find( + (teacher) => teacher.id === props.fundInformation.teacherID, + ); + if (selectedTeacher?.id) { + setDepartmentID(selectedTeacher.departmentID); + setFormData({ ...formData, teacherID: selectedTeacher.id }); + } + setTimeout(() => { + setDefaultValue(true); + }); + } else { + const relatedTeachers = props.teachers.filter( + (teacher) => teacher.departmentID === departmentID, + ); + if (relatedTeachers) { + setFormData({ ...formData, teacherID: relatedTeachers[0].id || 0 }); + } } - }, [props.teachers, props.fundInformation.teacherID]); + }, [departmentID, props.teachers]); const handler = (input: string) => From 722bb3da75196c9d25a69928d763894b93756307 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Mon, 18 Mar 2024 22:51:58 +0900 Subject: [PATCH 021/113] =?UTF-8?q?=E3=83=97=E3=83=AC=E3=83=93=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E7=94=BB=E9=9D=A2=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 20 ++++++++++ view/next-project/src/pages/api/minio.tsx | 1 - .../src/pages/miniotest/index.tsx | 38 ++++++++++++++----- 3 files changed, 48 insertions(+), 11 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index ebc0a5277..de984d7d2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,6 +15,9 @@ services: ports: - "3306:3306" restart: always + networks: + app_net: + ipv4_address: 192.168.176.2 view: build: ./view @@ -26,6 +29,9 @@ services: - "3000:3000" stdin_open: true tty: true + networks: + app_net: + ipv4_address: 192.168.176.3 api: build: @@ -43,6 +49,9 @@ services: depends_on: db: condition: service_started + networks: + app_net: + ipv4_address: 192.168.176.4 minio: image: minio/minio:latest @@ -55,3 +64,14 @@ services: environment: MINIO_ROOT_USER: user MINIO_ROOT_PASSWORD: password + networks: + app_net: + ipv4_address: 192.168.176.5 + +networks: + app_net: + driver: bridge + ipam: + driver: default + config: + - subnet: 192.168.176.0/24 diff --git a/view/next-project/src/pages/api/minio.tsx b/view/next-project/src/pages/api/minio.tsx index 8823f9d02..697f18d8d 100644 --- a/view/next-project/src/pages/api/minio.tsx +++ b/view/next-project/src/pages/api/minio.tsx @@ -10,7 +10,6 @@ export const config = { }; const minioClient = new Minio.Client({ - // endPoint: '100.81.148.25', endPoint: '192.168.176.1', port: 9000, useSSL: false, diff --git a/view/next-project/src/pages/miniotest/index.tsx b/view/next-project/src/pages/miniotest/index.tsx index a2455b4c3..f89b61079 100644 --- a/view/next-project/src/pages/miniotest/index.tsx +++ b/view/next-project/src/pages/miniotest/index.tsx @@ -2,7 +2,6 @@ import MainLayout from '@components/layout/MainLayout/MainLayout'; import * as Minio from 'minio'; import React, { useState, useEffect, useRef, InputHTMLAttributes, forwardRef } from 'react'; import { InputImage, PrimaryButton } from '@/components/common'; -import { Document, Page } from 'react-pdf'; type Args = { file: File | null; @@ -51,10 +50,12 @@ export default function MinioTest(props: Props) { const fileInputRef = useRef(null); const [imageFile, setImageFile] = useState(null); const [uploadImageURL, setUploadImageURL] = useState(''); + const [preview, setPreview] = useState({ uploadImageURL: '', type: '' }); const handleFileChange = (e: React.ChangeEvent) => { const targetFile = e.target.files?.[0]!; setImageFile(targetFile); + setPreview({ uploadImageURL: URL.createObjectURL(targetFile), type: targetFile.type }); setUploadImageURL(URL.createObjectURL(targetFile)); }; @@ -67,8 +68,6 @@ export default function MinioTest(props: Props) { const fileName = imageFile?.name || ''; formData.append('fileName', fileName); - // console.log(...formData.entries()); - await fetch('/api/minio', { method: 'POST', @@ -88,14 +87,33 @@ export default function MinioTest(props: Props) {
+ {preview.type === 'application/pdf' ? ( + + ) : ( + preview.type !== '' && + )} +
+
+ 画像表示テスト + + + Picture of the author
- {/* - - */} - Picture of the author - - - ); } From abef5560694c1f4c5a2e16b65b82f6a8d2e23b20 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Mon, 18 Mar 2024 23:13:56 +0900 Subject: [PATCH 022/113] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=83=80=E3=82=A6=E3=83=B3=E3=83=AD=E3=83=BC=E3=83=89=E6=A9=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/next-project/package-lock.json | 24 ++++++++++++++ view/next-project/package.json | 2 ++ view/next-project/src/pages/api/minio.tsx | 31 ++++++++++--------- .../src/pages/miniotest/index.tsx | 18 ++++++++++- 4 files changed, 59 insertions(+), 16 deletions(-) diff --git a/view/next-project/package-lock.json b/view/next-project/package-lock.json index 9fd67a21f..7f891e2c8 100644 --- a/view/next-project/package-lock.json +++ b/view/next-project/package-lock.json @@ -16,6 +16,7 @@ "@types/react-select": "^5.0.1", "clsx": "^1.2.1", "date-fns": "^2.30.0", + "file-saver": "^2.0.5", "formidable": "^3.5.1", "framer-motion": "^5.3.0", "fs": "^0.0.1-security", @@ -36,6 +37,7 @@ "tailwindcss": "^3.1.6" }, "devDependencies": { + "@types/file-saver": "^2.0.7", "@types/node": "^16.11.6", "@types/react": "^18.0.25", "@typescript-eslint/eslint-plugin": "^5.44.0", @@ -1946,6 +1948,12 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/file-saver": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz", + "integrity": "sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==", + "dev": true + }, "node_modules/@types/formidable": { "version": "3.4.5", "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-3.4.5.tgz", @@ -4068,6 +4076,11 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -9345,6 +9358,12 @@ "tslib": "^2.4.0" } }, + "@types/file-saver": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz", + "integrity": "sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==", + "dev": true + }, "@types/formidable": { "version": "3.4.5", "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-3.4.5.tgz", @@ -10900,6 +10919,11 @@ "flat-cache": "^3.0.4" } }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", diff --git a/view/next-project/package.json b/view/next-project/package.json index bf6ea6508..f7815b687 100644 --- a/view/next-project/package.json +++ b/view/next-project/package.json @@ -22,6 +22,7 @@ "@types/react-select": "^5.0.1", "clsx": "^1.2.1", "date-fns": "^2.30.0", + "file-saver": "^2.0.5", "formidable": "^3.5.1", "framer-motion": "^5.3.0", "fs": "^0.0.1-security", @@ -42,6 +43,7 @@ "tailwindcss": "^3.1.6" }, "devDependencies": { + "@types/file-saver": "^2.0.7", "@types/node": "^16.11.6", "@types/react": "^18.0.25", "@typescript-eslint/eslint-plugin": "^5.44.0", diff --git a/view/next-project/src/pages/api/minio.tsx b/view/next-project/src/pages/api/minio.tsx index 697f18d8d..6a8983f6e 100644 --- a/view/next-project/src/pages/api/minio.tsx +++ b/view/next-project/src/pages/api/minio.tsx @@ -40,21 +40,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) 'Content-Type': mimetype, }; - // console.log(bucketName); - console.log(fileName); - console.log(files.file); - // console.log(files.file[0].filepath); - // console.log(mimetype); - - // minioClient.bucketExists('finansu', function (err: any, exists: any) { - // if (err) { - // return console.log(err); - // } - // if (exists) { - // return console.log('Bucket exists.'); - // } - // }); - try { const response = await minioClient.putObject( bucketName, @@ -69,4 +54,20 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) } }); } + if (req.method === 'GET') { + try { + var size = 0; + const response = minioClient.fGetObject('finansu', 'go.png', '/tmp/go.png', function (err) { + if (err) { + return console.log(err); + } + console.log('success'); + }); + + console.log(response); + res.status(200).json({ response }); + } catch (err) { + throw new Error('Error uploading file (' + err + ')'); + } + } } diff --git a/view/next-project/src/pages/miniotest/index.tsx b/view/next-project/src/pages/miniotest/index.tsx index f89b61079..34aa96a5a 100644 --- a/view/next-project/src/pages/miniotest/index.tsx +++ b/view/next-project/src/pages/miniotest/index.tsx @@ -2,6 +2,7 @@ import MainLayout from '@components/layout/MainLayout/MainLayout'; import * as Minio from 'minio'; import React, { useState, useEffect, useRef, InputHTMLAttributes, forwardRef } from 'react'; import { InputImage, PrimaryButton } from '@/components/common'; +import { saveAs } from 'file-saver'; type Args = { file: File | null; @@ -78,6 +79,16 @@ export default function MinioTest(props: Props) { .catch((error) => console.error('Error:', error)); }; + const download = async () => { + const fileName = '令和6年3月学部卒業者一覧.pdf'; + const path = `http://127.0.0.1:9000/finansu/令和6年3月学部卒業者一覧.pdf`; + + const response = await fetch(path); + const blob = await response.blob(); + + saveAs(blob, fileName); + }; + return ( <>
@@ -93,7 +104,12 @@ export default function MinioTest(props: Props) { preview.type !== '' && )}
-
+
+ download()}> + ダウンロード + +
+
画像表示テスト Date: Tue, 19 Mar 2024 15:43:18 +0900 Subject: [PATCH 023/113] =?UTF-8?q?API=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/docs/docs.go | 118 +++++++++++++++ .../activity_information_controller.go | 97 ++++++++++++ .../activity_information_repository.go | 102 +++++++++++++ api/internals/di/di.go | 4 + api/internals/domain/activity_information.go | 16 ++ .../usecase/activity_information_usecase.go | 142 ++++++++++++++++++ api/router/router.go | 10 ++ mysql/db/activity_informations.sql | 13 ++ view/next-project/.env | 4 + view/next-project/src/pages/api/minio.tsx | 13 +- 10 files changed, 510 insertions(+), 9 deletions(-) create mode 100644 api/externals/controller/activity_information_controller.go create mode 100644 api/externals/repository/activity_information_repository.go create mode 100644 api/internals/domain/activity_information.go create mode 100644 api/internals/usecase/activity_information_usecase.go create mode 100644 mysql/db/activity_informations.sql create mode 100644 view/next-project/.env diff --git a/api/docs/docs.go b/api/docs/docs.go index 954772d3f..f53243588 100644 --- a/api/docs/docs.go +++ b/api/docs/docs.go @@ -139,6 +139,98 @@ const docTemplate = `{ }, }, }, + "/activity_informations": { + "get": { + tags: ["activity_information"], + "description": "activity_informationの一覧を取得", + "responses": { + "200": { + "description": "activity_informationの一覧の取得", + } + } + }, + "post": { + tags: ["activity_information"], + "description": "activity_informationの作成", + "parameters": [ + { + "in": "body", + "name": "activity_information", + "schema":{ + "$ref": "#/definitions/activity_information" + }, + }, + ], + responses: { + "200": { + "description": "create されたactivity_informationが返ってくる", + } + }, + }, + }, + "/activity_informations/{id}": { + "get": { + tags: ["activity_information"], + "description": "IDで指定されたactivity_informationsの取得", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "activity_informationの取得", + } + } + }, + "put": { + tags: ["activity_information"], + "description": "activity_informationの更新", + responses: { + "200": { + "description": "更新されたactivity_informationが返ってくる", + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "description": "id", + "required": true, + "type": "integer" + }, + { + "in": "body", + "name": "activity_information", + "schema":{ + "$ref": "#/definitions/activity_information" + }, + }, + ], + }, + "delete": { + tags: ["activity_information"], + "description": "IDを指定してactivity_informationの削除", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "id", + "required": true, + "type": "integer" + } + ], + responses: { + "200": { + "description": "activity_informationの削除完了", + } + }, + }, + }, "/activity_styles": { "get": { tags: ["activity_style"], @@ -2253,6 +2345,32 @@ const docTemplate = `{ "remark", }, }, + "activity_information":{ + "properties":{ + "activityID":{ + "type": "int", + "example": 1, + + }, + "bucketName":{ + "type": "string", + "example": "なし", + }, + "fileName":{ + "type": "string", + "example": "なし", + }, + "fileType":{ + "type": "string", + "example": "なし", + + }, + "designProgress":{ + "type": "int", + "example": 1, + }, + }, + }, "activity_style":{ "properties":{ "activityID":{ diff --git a/api/externals/controller/activity_information_controller.go b/api/externals/controller/activity_information_controller.go new file mode 100644 index 000000000..96cf5616c --- /dev/null +++ b/api/externals/controller/activity_information_controller.go @@ -0,0 +1,97 @@ +package controller + +import ( + "fmt" + "net/http" + "strconv" + + "github.com/NUTFes/FinanSu/api/internals/domain" + "github.com/NUTFes/FinanSu/api/internals/usecase" + "github.com/labstack/echo/v4" +) + +type activityInformationController struct { + u usecase.ActivityInformationUseCase +} + +type ActivityInformationController interface { + IndexActivityInformation(echo.Context) error + ShowActivityInformation(echo.Context) error + CreateActivityInformation(echo.Context) error + UpdateActivityInformation(echo.Context) error + DestroyActivityInformation(echo.Context) error +} + +func NewActivityInformationController(u usecase.ActivityInformationUseCase) ActivityInformationController { + return &activityInformationController{u} +} + +// Index +func (a *activityInformationController) IndexActivityInformation(c echo.Context) error { + activityInformations, err := a.u.GetActivityInformation(c.Request().Context()) + if err != nil { + return err + } + return c.JSON(http.StatusOK, activityInformations) +} + +// Show +func (a *activityInformationController) ShowActivityInformation(c echo.Context) error { + id := c.Param("id") + activityInformation, err := a.u.GetActivityInformationByID(c.Request().Context(), id) + if err != nil { + return err + } + return c.JSON(http.StatusOK, activityInformation) +} + +// Create +func (a *activityInformationController) CreateActivityInformation(c echo.Context) error { + activityInformation := new(domain.ActivityInformation) + if err := c.Bind(activityInformation); err != nil { + fmt.Println("err") + return err + } + + latastActivityInformation, err := a.u.CreateActivityInformation(c.Request().Context() , + strconv.Itoa(int(activityInformation.ActivityId)), + activityInformation.BucketName, + activityInformation.FileName, + activityInformation.FileType, + strconv.Itoa(int(activityInformation.DesignProgress))) + if err != nil { + return err + } + return c.JSON(http.StatusOK, latastActivityInformation) +} + +// Update +func (a *activityInformationController) UpdateActivityInformation(c echo.Context) error { + id := c.Param("id") + activityInformation := new(domain.ActivityInformation) + if err := c.Bind(activityInformation); err != nil { + fmt.Println("err") + return err + } + updatedActivity, err := a.u.UpdateActivityInformation(c.Request().Context(), + id, + strconv.Itoa(int(activityInformation.ActivityId)), + activityInformation.BucketName, + activityInformation.FileName, + activityInformation.FileType, + strconv.Itoa(int(activityInformation.DesignProgress))) + if err != nil { + return err + } + return c.JSON(http.StatusOK, updatedActivity) +} + +// Destroy +func (a *activityInformationController) DestroyActivityInformation(c echo.Context) error { + id := c.Param("id") + err := a.u.DestroyActivityInformation(c.Request().Context(), id) + if err != nil { + return err + } + return c.String(http.StatusOK, "Destroy ActivityInformations") +} diff --git a/api/externals/repository/activity_information_repository.go b/api/externals/repository/activity_information_repository.go new file mode 100644 index 000000000..8d3889ddc --- /dev/null +++ b/api/externals/repository/activity_information_repository.go @@ -0,0 +1,102 @@ +package repository + +import ( + "context" + "database/sql" + + "github.com/NUTFes/FinanSu/api/drivers/db" + "github.com/NUTFes/FinanSu/api/externals/repository/abstract" +) + +type activityInformationRepository struct { + client db.Client + crud abstract.Crud +} + +type ActivityInformationRepository interface { + All(context.Context) (*sql.Rows, error) + Find(context.Context, string) (*sql.Row, error) + Create(context.Context, string, string, string, string, string) error + Update(context.Context, string, string, string, string, string, string) error + Destroy(context.Context, string) error + FindLatestRecord(context.Context) (*sql.Row, error) +} + +func NewActivityInformationsRepository(c db.Client, ac abstract.Crud) ActivityInformationRepository { + return &activityInformationRepository{c, ac} +} + +// 全件取得 +func (ar *activityInformationRepository) All(c context.Context) (*sql.Rows, error) { + query := "SELECT * FROM activity_informations" + return ar.crud.Read(c, query) +} + +// 1件取得 +func (ar *activityInformationRepository) Find(c context.Context, id string) (*sql.Row, error) { + query := "SELECT * FROM activity_informations WHERE id =" + id + return ar.crud.ReadByID(c, query) +} + +// 作成 +func (ar *activityInformationRepository) Create( + c context.Context, + activityId string, + bucketName string, + fileName string, + fileType string, + designProgress string, + ) error { + + query := ` + INSERT INTO activity_informations + (activity_id, bucket_name, file_name, file_type, design_progress) + VALUES + (` + activityId + `, "` + bucketName + `", "` + fileName +`", "` + fileType + `", "` + designProgress +`")` + + return ar.crud.UpdateDB(c, query) +} + +// 編集 +func (ar *activityInformationRepository) Update( + c context.Context, + id string, + activityId string, + bucketName string, + fileName string, + fileType string, + designProgress string, + ) error { + + query := ` + UPDATE activity_informations + SET + activity_id = ` + activityId + + `, bucket_name = "` + bucketName + + `", file_name = "` + fileName + + `", file_type = "` + fileType + + `", design_progress = ` + designProgress + + ` where id = ` + id + + return ar.crud.UpdateDB(c, query) +} + +// 削除 +func (ar *activityInformationRepository) Destroy(c context.Context, id string) error { + query := "DELETE FROM activity_informations WHERE id = " + id + return ar.crud.UpdateDB(c, query) +} + +// 最新のレコードを取得 +func (ar *activityInformationRepository) FindLatestRecord(c context.Context) (*sql.Row, error) { + query := ` + SELECT + * + FROM + activity_informations + ORDER BY + id + DESC LIMIT 1 + ` + return ar.crud.ReadByID(c, query) +} diff --git a/api/internals/di/di.go b/api/internals/di/di.go index 17ede41ad..fd579d955 100644 --- a/api/internals/di/di.go +++ b/api/internals/di/di.go @@ -25,6 +25,7 @@ func InitializeServer() db.Client { // Repository activityRepository := repository.NewActivityRepository(client, crud) + activityInformationRepository := repository.NewActivityInformationsRepository(client, crud) activityStyleRepository := repository.NewActivityStyleRepository(client, crud) budgetRepository := repository.NewBudgetRepository(client, crud) bureauRepository := repository.NewBureauRepository(client, crud) @@ -46,6 +47,7 @@ func InitializeServer() db.Client { // UseCase activityUseCase := usecase.NewActivityUseCase(activityRepository) + activityInformationUseCase := usecase.NewActivityInformationUseCase(activityInformationRepository) activityStyleUseCase := usecase.NewActivityStyleUseCase(activityStyleRepository) budgetUseCase := usecase.NewBudgetUseCase(budgetRepository) bureauUseCase := usecase.NewBureauUseCase(bureauRepository) @@ -66,6 +68,7 @@ func InitializeServer() db.Client { // Controller activityController := controller.NewActivityController(activityUseCase) + activityInformationController := controller.NewActivityInformationController(activityInformationUseCase) activityStyleController := controller.NewActivityStyleController(activityStyleUseCase) budgetController := controller.NewBudgetController(budgetUseCase) bureauController := controller.NewBureauController(bureauUseCase) @@ -88,6 +91,7 @@ func InitializeServer() db.Client { // router router := router.NewRouter( activityController, + activityInformationController, activityStyleController, budgetController, bureauController, diff --git a/api/internals/domain/activity_information.go b/api/internals/domain/activity_information.go new file mode 100644 index 000000000..9a2cb2f02 --- /dev/null +++ b/api/internals/domain/activity_information.go @@ -0,0 +1,16 @@ +package domain + +import ( + "time" +) + +type ActivityInformation struct { + ID int `json:"id"` + ActivityId int `json:"activityID"` + BucketName string `json:"bucketName"` + FileName string `json:"fileName"` + FileType string `json:"fileType"` + DesignProgress int `json:"designProgress"` + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` +} diff --git a/api/internals/usecase/activity_information_usecase.go b/api/internals/usecase/activity_information_usecase.go new file mode 100644 index 000000000..73efb4e42 --- /dev/null +++ b/api/internals/usecase/activity_information_usecase.go @@ -0,0 +1,142 @@ +package usecase + +import ( + "context" + + rep "github.com/NUTFes/FinanSu/api/externals/repository" + "github.com/NUTFes/FinanSu/api/internals/domain" + "github.com/pkg/errors" +) + +type activityInformationUseCase struct { + rep rep.ActivityInformationRepository +} + +type ActivityInformationUseCase interface { + GetActivityInformation(context.Context) ([]domain.ActivityInformation, error) + GetActivityInformationByID(context.Context, string) (domain.ActivityInformation, error) + CreateActivityInformation(context.Context, string, string, string, string, string) (domain.ActivityInformation, error) + UpdateActivityInformation(context.Context, string, string, string, string, string, string) (domain.ActivityInformation, error) + DestroyActivityInformation(context.Context, string) error +} + +func NewActivityInformationUseCase(rep rep.ActivityInformationRepository) ActivityInformationUseCase { + return &activityInformationUseCase{rep} +} + +func (a *activityInformationUseCase) GetActivityInformation(c context.Context) ([]domain.ActivityInformation, error) { + + activityInformation := domain.ActivityInformation{} + var activityInformations []domain.ActivityInformation + + // クエリー実行 + rows, err := a.rep.All(c) + if err != nil { + return nil, err + } + defer rows.Close() + + for rows.Next() { + err := rows.Scan( + &activityInformation.ID, + &activityInformation.ActivityId, + &activityInformation.BucketName, + &activityInformation.FileName, + &activityInformation.FileType, + &activityInformation.DesignProgress, + &activityInformation.CreatedAt, + &activityInformation.UpdatedAt, + ) + + if err != nil { + return nil, errors.Wrapf(err, "cannot connect SQL") + } + + activityInformations = append(activityInformations, activityInformation) + } + return activityInformations, nil +} + +func (a *activityInformationUseCase) GetActivityInformationByID(c context.Context, id string) (domain.ActivityInformation, error) { + var activityInformation domain.ActivityInformation + + row, err := a.rep.Find(c, id) + err = row.Scan( + &activityInformation.ID, + &activityInformation.ActivityId, + &activityInformation.BucketName, + &activityInformation.FileName, + &activityInformation.FileType, + &activityInformation.DesignProgress, + &activityInformation.CreatedAt, + &activityInformation.UpdatedAt, + ) + + if err != nil { + return activityInformation, err + } + + return activityInformation, nil +} + +func (a *activityInformationUseCase) CreateActivityInformation( + c context.Context, + activityId string, + bucketName string, + fileName string, + fileType string, + designProgress string) (domain.ActivityInformation, error) { + latastActivityInformation := domain.ActivityInformation{} + + err := a.rep.Create(c, activityId, bucketName, fileName, fileType, designProgress) + row, err := a.rep.FindLatestRecord(c) + err = row.Scan( + &latastActivityInformation.ID, + &latastActivityInformation.ActivityId, + &latastActivityInformation.BucketName, + &latastActivityInformation.FileName, + &latastActivityInformation.FileType, + &latastActivityInformation.DesignProgress, + &latastActivityInformation.CreatedAt, + &latastActivityInformation.UpdatedAt, + ) + + if err != nil { + return latastActivityInformation, err + } + return latastActivityInformation, nil +} + +func (a *activityInformationUseCase) UpdateActivityInformation( + c context.Context, + id string, + activityId string, + bucketName string, + fileName string, + fileType string, + designProgress string) (domain.ActivityInformation, error) { + updatedActivityInformation := domain.ActivityInformation{} + err := a.rep.Update(c, id, activityId, bucketName, fileName, fileType, designProgress) + row, err := a.rep.Find(c, id) + err = row.Scan( + &updatedActivityInformation.ID, + &updatedActivityInformation.ActivityId, + &updatedActivityInformation.BucketName, + &updatedActivityInformation.FileName, + &updatedActivityInformation.FileType, + &updatedActivityInformation.DesignProgress, + &updatedActivityInformation.CreatedAt, + &updatedActivityInformation.UpdatedAt, + + ) + if err != nil { + return updatedActivityInformation, err + } + return updatedActivityInformation, nil +} + +func (a *activityInformationUseCase) DestroyActivityInformation(c context.Context, id string) error { + err := a.rep.Destroy(c, id) + return err +} + diff --git a/api/router/router.go b/api/router/router.go index b00227c0e..9adc39655 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -7,6 +7,7 @@ import ( type router struct { activityController controller.ActivityController + activityInformationController controller.ActivityInformationController activityStyleController controller.ActivityStyleController budgetController controller.BudgetController bureauController controller.BureauController @@ -32,6 +33,7 @@ type Router interface { func NewRouter( activityController controller.ActivityController, + activityInformationController controller.ActivityInformationController, activitystyleController controller.ActivityStyleController, budgetController controller.BudgetController, bureauController controller.BureauController, @@ -52,6 +54,7 @@ func NewRouter( ) Router { return router{ activityController, + activityInformationController, activitystyleController, budgetController, bureauController, @@ -85,6 +88,13 @@ func (r router) ProvideRouter(e *echo.Echo) { e.GET("/activities/details", r.activityController.IndexActivityDetail) e.GET("/activities/details/:year",r.activityController.IndexActivityDetailsByPeriod) + // activityInformationsのRoute + e.GET("/activity_informations", r.activityInformationController.IndexActivityInformation) + e.GET("/activity_informations/:id", r.activityInformationController.ShowActivityInformation) + e.POST("/activity_informations", r.activityInformationController.CreateActivityInformation) + e.PUT("/activity_informations/:id", r.activityInformationController.UpdateActivityInformation) + e.DELETE("/activity_informations/:id", r.activityInformationController.DestroyActivityInformation) + // activityStyleのRoute e.GET("/activity_styles", r.activityStyleController.IndexActivityStyle) e.GET("/activity_styles/:id", r.activityStyleController.ShowActivityStyle) diff --git a/mysql/db/activity_informations.sql b/mysql/db/activity_informations.sql new file mode 100644 index 000000000..b3cc24e12 --- /dev/null +++ b/mysql/db/activity_informations.sql @@ -0,0 +1,13 @@ +use finansu_db; + +CREATE TABLE activity_informations ( + id int(10) unsigned not null auto_increment, + activity_id int(10), + bucket_name varchar(255), + file_name varchar(255), + file_type varchar(255), + design_progress int(10), + created_at datetime not null default current_timestamp, + updated_at datetime not null default current_timestamp on update current_timestamp, + PRIMARY KEY (id) +); diff --git a/view/next-project/.env b/view/next-project/.env new file mode 100644 index 000000000..eed28dde5 --- /dev/null +++ b/view/next-project/.env @@ -0,0 +1,4 @@ +NEXT_PUBLIC_ENDPOINT='192.168.176.1' +NEXT_PUBLIC_PORT=9000 +NEXT_PUBLIC_ACCESS_KEY='bE5KYqihEcEXMrgkVhZn' +NEXT_PUBLIC_SECRET_KEY='oQvamjXnAvrsyneZdluX7S49TfRi0na6AO8WNPuL' diff --git a/view/next-project/src/pages/api/minio.tsx b/view/next-project/src/pages/api/minio.tsx index 6a8983f6e..50a41f070 100644 --- a/view/next-project/src/pages/api/minio.tsx +++ b/view/next-project/src/pages/api/minio.tsx @@ -10,16 +10,11 @@ export const config = { }; const minioClient = new Minio.Client({ - endPoint: '192.168.176.1', - port: 9000, + endPoint: process.env.NEXT_PUBLIC_ENDPOINT || '', + port: Number(process.env.NEXT_PUBLIC_PORT), + accessKey: process.env.NEXT_PUBLIC_ACCESS_KEY || '', + secretKey: process.env.NEXT_PUBLIC_SECRET_KEY || '', useSSL: false, - accessKey: 'bE5KYqihEcEXMrgkVhZn', - secretKey: 'oQvamjXnAvrsyneZdluX7S49TfRi0na6AO8WNPuL', - // endPoint: process.env.NEXT_PUBLIC_ENDPOINT, - // port: Number(process.env.NEXT_PUBLIC_PORT), - // accessKey: process.env.NEXT_PUBLIC_ACCESS_KEY, - // secretKey: process.env.NEXT_PUBLIC_SECRET_KEY, - // useSSL: false, }); export default async function handler(req: NextApiRequest, res: NextApiResponse) { From 10d7e8e972c8fef7035ff7461c5bbebbabce2c03 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 19 Mar 2024 06:53:24 +0000 Subject: [PATCH 024/113] =?UTF-8?q?[feat]=20select=E3=81=ABdefaultValue?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/next-project/src/components/common/Select/Select.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/view/next-project/src/components/common/Select/Select.tsx b/view/next-project/src/components/common/Select/Select.tsx index f292cf490..f3c8992db 100644 --- a/view/next-project/src/components/common/Select/Select.tsx +++ b/view/next-project/src/components/common/Select/Select.tsx @@ -7,6 +7,7 @@ interface Props { className?: string; placeholder?: string; value?: string | number; + defaultValue?: string | number; onChange?: (e: React.ChangeEvent) => void; children?: React.ReactNode; } @@ -21,6 +22,7 @@ function Select(props: Props): JSX.Element { placeholder={props.placeholder} className={clsx(s.select, className)} value={props.value} + defaultValue={props.defaultValue} onChange={props.onChange} > {props.children} From 90f74f185de71ea90308494632442cb9dcbb27a8 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 19 Mar 2024 06:55:42 +0000 Subject: [PATCH 025/113] =?UTF-8?q?[fix]=20=E3=83=AD=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=81=97=E3=81=A6=E3=81=84=E3=82=8B=E3=83=A6=E3=83=BC?= =?UTF-8?q?=E3=82=B6=E3=83=BC=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=95=E3=81=9B?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/fund_information/AddModal.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/view/next-project/src/components/fund_information/AddModal.tsx b/view/next-project/src/components/fund_information/AddModal.tsx index b295659a6..16bac2a3c 100644 --- a/view/next-project/src/components/fund_information/AddModal.tsx +++ b/view/next-project/src/components/fund_information/AddModal.tsx @@ -52,6 +52,9 @@ const OpenAddModal: FC = (props) => { return res; }, [bureauId]); + const loginUser = user.id; + const loginUserDepartment = BUREAUS.find((u) => user.bureauID === u.id)?.name; + const handler = (input: string) => (e: React.ChangeEvent | React.ChangeEvent) => { @@ -104,7 +107,8 @@ const OpenAddModal: FC = (props) => {

担当者の局

- setBureauId(Number(e.target.value))}> + {BUREAUS.map((bureaus) => (

担当者

- + {filteredUsers.map((user) => (
+ +
diff --git a/view/next-project/src/pages/purchasereports/index.tsx b/view/next-project/src/pages/purchasereports/index.tsx index f6591597a..89fac1620 100644 --- a/view/next-project/src/pages/purchasereports/index.tsx +++ b/view/next-project/src/pages/purchasereports/index.tsx @@ -242,7 +242,6 @@ export default function PurchaseReports(props: Props) { -
ID
From 3d1425eea10b1cf2622954e08fa48481051e450d Mon Sep 17 00:00:00 2001 From: keisuke-japan Date: Tue, 19 Mar 2024 10:15:13 +0000 Subject: [PATCH 031/113] formatted by workflow --- .../src/components/purchasereports/PurchaseOrderListModal.tsx | 2 +- view/next-project/src/pages/purchasereports/index.tsx | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/view/next-project/src/components/purchasereports/PurchaseOrderListModal.tsx b/view/next-project/src/components/purchasereports/PurchaseOrderListModal.tsx index 011bcf9c4..fc6129cd5 100644 --- a/view/next-project/src/components/purchasereports/PurchaseOrderListModal.tsx +++ b/view/next-project/src/components/purchasereports/PurchaseOrderListModal.tsx @@ -76,7 +76,7 @@ export default function PurchaseItemNumModal() { }; return ( - +
diff --git a/view/next-project/src/pages/purchasereports/index.tsx b/view/next-project/src/pages/purchasereports/index.tsx index 89fac1620..51179bdb3 100644 --- a/view/next-project/src/pages/purchasereports/index.tsx +++ b/view/next-project/src/pages/purchasereports/index.tsx @@ -241,8 +241,7 @@ export default function PurchaseReports(props: Props) { - + From c286b4b7e3e8ccf1ce981ec5be54b90962febffb Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 19 Mar 2024 12:07:44 +0000 Subject: [PATCH 032/113] =?UTF-8?q?[fix]=20=E5=B9=B4=E5=BA=A6=E5=88=A5?= =?UTF-8?q?=E3=81=AB=E6=94=AF=E5=87=BA=E3=81=AE=E9=81=B8=E6=8A=9E=E6=AC=84?= =?UTF-8?q?=E3=82=92=E9=81=B8=E3=81=B9=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchaseorders/OpenAddModalButton.tsx | 7 ++--- .../purchaseorders/PurchaseItemNumModal.tsx | 26 ++++++++++++++----- .../src/pages/purchaseorders/index.tsx | 4 +-- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx b/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx index 3b072c8a1..95c1666c7 100644 --- a/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx +++ b/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx @@ -2,16 +2,17 @@ import React, { useState } from 'react'; import PurchaseItemNumModal from './PurchaseItemNumModal'; import { AddButton } from '@components/common'; -import { Expense } from '@type/common'; +import { Expense, YearPeriod } from '@type/common'; interface Props { children?: React.ReactNode; expenses: Expense[]; + yearPeriods: YearPeriod[]; + selectedyear: string; } export default function OpenModalButton(props: Props) { const [isOpen, setIsOpen] = useState(false); - return ( <> {props.children} - {isOpen && } + {isOpen && } ); } diff --git a/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx b/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx index 46cec8951..cad82efbd 100644 --- a/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx +++ b/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx @@ -5,11 +5,13 @@ import { userAtom } from '@/store/atoms'; import { post } from '@api/purchaseOrder'; import { CloseButton, Input, Modal, PrimaryButton, Select } from '@components/common'; import AddModal from '@components/purchaseorders/PurchaseOrderAddModal'; -import { PurchaseItem, PurchaseOrder, Expense } from '@type/common'; +import { PurchaseItem, PurchaseOrder, Expense, YearPeriod } from '@type/common'; export interface PurchaseItemNumModalProps { setIsOpen: React.Dispatch>; expenses: Expense[]; + yearPeriods: YearPeriod[]; + selectedYear: string; } export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { @@ -95,6 +97,16 @@ export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { setFormDataList(initialPurchaseItemList); }; + //yearPeriodsとselectedYearを紐づける + const selectedYear = props.yearPeriods.find((u) => { + return u.year === parseInt(props.selectedYear); + })?.id; + + console.log(selectedYear); + console.log(props.expenses); + console.log(parseInt(props.selectedYear)); + console.log(props.yearPeriods); + return ( <> @@ -121,11 +133,13 @@ export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { onChange={formDataHandler('expenseID')} className='w-full' > - {props.expenses.map((data) => ( - - ))} + {props.expenses + .filter((expense) => selectedYear === expense.yearID) + .map((data) => ( + + ))}

購入物品数

diff --git a/view/next-project/src/pages/purchaseorders/index.tsx b/view/next-project/src/pages/purchaseorders/index.tsx index 8c8c54b59..9f176d824 100644 --- a/view/next-project/src/pages/purchaseorders/index.tsx +++ b/view/next-project/src/pages/purchaseorders/index.tsx @@ -215,7 +215,7 @@ export default function PurchaseOrders(props: Props) {
- 申請登録 + 申請登録
@@ -393,7 +393,7 @@ export default function PurchaseOrders(props: Props) { /> )}
- +
); From 2cd30734a561dc491b139037903a9bc9a5978a77 Mon Sep 17 00:00:00 2001 From: hikahana Date: Tue, 19 Mar 2024 12:11:08 +0000 Subject: [PATCH 033/113] formatted by workflow --- .../purchaseorders/OpenAddModalButton.tsx | 9 ++++++++- .../src/pages/purchaseorders/index.tsx | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx b/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx index 95c1666c7..b3a7dc985 100644 --- a/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx +++ b/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx @@ -22,7 +22,14 @@ export default function OpenModalButton(props: Props) { > {props.children} - {isOpen && } + {isOpen && ( + + )} ); } diff --git a/view/next-project/src/pages/purchaseorders/index.tsx b/view/next-project/src/pages/purchaseorders/index.tsx index 9f176d824..466abcae8 100644 --- a/view/next-project/src/pages/purchaseorders/index.tsx +++ b/view/next-project/src/pages/purchaseorders/index.tsx @@ -215,7 +215,13 @@ export default function PurchaseOrders(props: Props) {
- 申請登録 + + 申請登録 +
@@ -393,7 +399,11 @@ export default function PurchaseOrders(props: Props) { /> )}
- +
); From 8f296817727a6376a2784555ad3d7a9e11463f43 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 19 Mar 2024 12:33:47 +0000 Subject: [PATCH 034/113] =?UTF-8?q?[fix]=20=E4=BC=81=E6=A5=AD=E5=90=8D?= =?UTF-8?q?=E3=82=92=E5=85=A5=E5=8A=9B=E3=81=95=E3=81=9B=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=83=90=E3=83=AA=E3=83=87=E3=83=BC=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/next-project/src/components/sponsors/SponsorAddModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/next-project/src/components/sponsors/SponsorAddModal.tsx b/view/next-project/src/components/sponsors/SponsorAddModal.tsx index 4a39667c4..4a51f6af5 100644 --- a/view/next-project/src/components/sponsors/SponsorAddModal.tsx +++ b/view/next-project/src/components/sponsors/SponsorAddModal.tsx @@ -82,7 +82,7 @@ export default function SponsorAddModal() {
{ submit(formData); }} From 2b9c0b5ae65c55225b0cb791ef9afe2197c1fd59 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 00:36:07 +0900 Subject: [PATCH 035/113] =?UTF-8?q?[fix]=E8=A4=87=E6=95=B0=E3=81=AE?= =?UTF-8?q?=E7=94=BB=E5=83=8F=E3=81=AE=E7=99=BB=E9=8C=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/activity_repository.go | 8 +- api/internals/domain/activity.go | 2 +- api/internals/usecase/activity_usecase.go | 77 ++++++++-------- .../sponsoractivities/DetailPage2.tsx | 87 ++++++++++++------- view/next-project/src/type/common.ts | 2 +- 5 files changed, 101 insertions(+), 75 deletions(-) diff --git a/api/externals/repository/activity_repository.go b/api/externals/repository/activity_repository.go index 24779cf4e..33ddad1fc 100644 --- a/api/externals/repository/activity_repository.go +++ b/api/externals/repository/activity_repository.go @@ -23,7 +23,7 @@ type ActivityRepository interface { FindLatestRecord(c context.Context) (*sql.Row, error) FindSponsorStyle(context.Context, string) (*sql.Rows, error) AllDetailsByPeriod(context.Context, string) (*sql.Rows, error) - FindAcitivityInformation(context.Context, string) (*sql.Row, error) + FindAcitivityInformation(context.Context, string) (*sql.Rows, error) } func NewActivityRepository(c db.Client, ac abstract.Crud) ActivityRepository { @@ -147,9 +147,9 @@ func (ar *activityRepository) FindSponsorStyle(c context.Context, sponsorStyleID } // 指定したactivity_idのactivityを取得する -func (ar *activityRepository) FindAcitivityInformation(c context.Context, activityID string) (*sql.Row, error) { - query := "SELECT * FROM activity_informations WHERE id =" + activityID - return ar.crud.ReadByID(c, query) +func (ar *activityRepository) FindAcitivityInformation(c context.Context, activityID string) (*sql.Rows, error) { + query := "SELECT * FROM activity_informations WHERE activity_id =" + activityID + return ar.crud.Read(c, query) } // 年度別のactivityに紐づくsponserとusersを取得する diff --git a/api/internals/domain/activity.go b/api/internals/domain/activity.go index 4879b4edf..b318d6a9b 100644 --- a/api/internals/domain/activity.go +++ b/api/internals/domain/activity.go @@ -22,7 +22,7 @@ type ActivityDetail struct { Activity Activity `json:"sponsorActivity"` Sponsor Sponsor `json:"sponsor"` User User `json:"user"` - ActivityInformation ActivityInformation `json:"sponsorActivityInformation"` + ActivityInformation []ActivityInformation `json:"sponsorActivityInformations"` StyleDetail []StyleDetail `json:"styleDetail"` } diff --git a/api/internals/usecase/activity_usecase.go b/api/internals/usecase/activity_usecase.go index 53ed51b26..c3a7c60a1 100644 --- a/api/internals/usecase/activity_usecase.go +++ b/api/internals/usecase/activity_usecase.go @@ -167,6 +167,7 @@ func (a *activityUseCase) GetActivityDetail(c context.Context) ([]domain.Activit styleDetail := domain.StyleDetail{} var styleDetails []domain.StyleDetail activityInformation := domain.ActivityInformation{} + var activityInformations []domain.ActivityInformation // クエリー実行 rows, err := a.rep.FindDetail(c) @@ -207,27 +208,27 @@ func (a *activityUseCase) GetActivityDetail(c context.Context) ([]domain.Activit return nil, errors.Wrapf(err, "cannot connect SQL") } - row, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID))) - err = row.Scan( - &activityInformation.ID, - &activityInformation.ActivityId, - &activityInformation.BucketName, - &activityInformation.FileName, - &activityInformation.FileType, - &activityInformation.DesignProgress, - &activityInformation.CreatedAt, - &activityInformation.UpdatedAt, - - ) - if err != nil { - activity.ActivityInformation = domain.ActivityInformation{} - - }else{ - activity.ActivityInformation = activityInformation + rows, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID))) + for rows.Next(){ + err := rows.Scan( + &activityInformation.ID, + &activityInformation.ActivityId, + &activityInformation.BucketName, + &activityInformation.FileName, + &activityInformation.FileType, + &activityInformation.DesignProgress, + &activityInformation.CreatedAt, + &activityInformation.UpdatedAt, + ) + if err != nil { + return nil, err + } + activityInformations = append(activityInformations, activityInformation) } - + activity.ActivityInformation = activityInformations + activityInformations = nil - rows, err := a.rep.FindSponsorStyle(c, strconv.Itoa(int(activity.Activity.ID))) + rows, err = a.rep.FindSponsorStyle(c, strconv.Itoa(int(activity.Activity.ID))) for rows.Next(){ err := rows.Scan( &styleDetail.ActivityStyle.ID, @@ -261,6 +262,7 @@ func (a *activityUseCase) GetActivityDetailsByPeriod(c context.Context, year str styleDetail := domain.StyleDetail{} var styleDetails []domain.StyleDetail activityInformation := domain.ActivityInformation{} + var activityInformations []domain.ActivityInformation // クエリー実行 rows, err := a.rep.AllDetailsByPeriod(c, year) @@ -301,26 +303,27 @@ func (a *activityUseCase) GetActivityDetailsByPeriod(c context.Context, year str return nil, errors.Wrapf(err, "cannot connect SQL") } - row, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID))) - err = row.Scan( - &activityInformation.ID, - &activityInformation.ActivityId, - &activityInformation.BucketName, - &activityInformation.FileName, - &activityInformation.FileType, - &activityInformation.DesignProgress, - &activityInformation.CreatedAt, - &activityInformation.UpdatedAt, - - ) - if err != nil { - activity.ActivityInformation = domain.ActivityInformation{} - - }else{ - activity.ActivityInformation = activityInformation + rows, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID))) + for rows.Next(){ + err := rows.Scan( + &activityInformation.ID, + &activityInformation.ActivityId, + &activityInformation.BucketName, + &activityInformation.FileName, + &activityInformation.FileType, + &activityInformation.DesignProgress, + &activityInformation.CreatedAt, + &activityInformation.UpdatedAt, + ) + if err != nil { + return nil, err + } + activityInformations = append(activityInformations, activityInformation) } + activity.ActivityInformation = activityInformations + activityInformations = nil - rows, err := a.rep.FindSponsorStyle(c,strconv.Itoa(int(activity.Activity.ID))) + rows, err = a.rep.FindSponsorStyle(c,strconv.Itoa(int(activity.Activity.ID))) for rows.Next(){ err := rows.Scan( &styleDetail.ActivityStyle.ID, diff --git a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx index 24f2b2a1e..8c9ae0a56 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx @@ -19,20 +19,27 @@ const DetailPage2: FC = (props) => { props.setPageNum(1); }; - const formatDate = (date: string) => { - const datetime = date.replace('T', ' '); - const datetime2 = datetime.substring(0, datetime.length - 10); - return datetime2; - }; + const sponsorActivityInformations = props.sponsorActivitiesViewItem.sponsorActivityInformations; - const designProgress = DESIGN_PROGRESSES.filter( - (design) => - design.id === props.sponsorActivitiesViewItem.sponsorActivityInformation?.designProgress, - ); - const bucketName = props.sponsorActivitiesViewItem.sponsorActivityInformation?.bucketName; - const fileName = props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileName; - const fileURL = `http://127.0.0.1:9000/${bucketName}/${fileName}`; + const designProgresses = + sponsorActivityInformations && + sponsorActivityInformations.map((activityInformation) => { + const designProgress = DESIGN_PROGRESSES.filter( + (design) => design.id === activityInformation.designProgress, + ); + return designProgress[0]; + }); + const fileURLs = + sponsorActivityInformations && + sponsorActivityInformations.map((activityInformation) => { + const bucketName = activityInformation.bucketName; + const fileName = activityInformation.fileName; + return `http://127.0.0.1:9000/${bucketName}/${fileName}`; + }); + + console.log(designProgresses); + console.log(fileURLs); const download = async (url: string, fileName: string) => { const response = await fetch(url); const blob = await response.blob(); @@ -90,27 +97,43 @@ const DetailPage2: FC = (props) => {
-
ID

広告デザイン

-
-
-

広告の状況

-

{designProgress[0]?.state}

-
-
-
- {props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileType === - 'application/pdf' && - props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileName && ( - - )} - {props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileType !== - 'application/pdf' && - props.sponsorActivitiesViewItem.sponsorActivityInformation?.fileName && ( - Picture of the author - )} +
+ {sponsorActivityInformations && + sponsorActivityInformations.map((activityInformation, index) => ( + <> +
+
+

広告の状況

+

+ {designProgresses && designProgresses[index].state} +

+
+
+
+ {activityInformation?.fileType === 'application/pdf' && + activityInformation?.fileName && ( + + )} + {activityInformation.fileType !== 'application/pdf' && + activityInformation.fileName && ( + Picture of the author + )} +
+ + fileURLs && download(fileURLs[index], activityInformation.fileName || '') + } + > + ダウンロード + + + ))}
- download(fileURL, fileName || '')}> - ダウンロード -
- - fileURLs && download(fileURLs[index], activityInformation.fileName || '') - } - > - ダウンロード - +
+ { + setEditActivityInformation(activityInformation); + setIsOpen(true); + }} + > + 変更 + + + fileURLs && download(fileURLs[index], activityInformation.fileName || '') + } + > + ダウンロード + +
))} + {!sponsorActivityInformations && ( + <> +
+
+

広告の状況

+

未回収

+
+
+
+ { + setIsOpen(true); + }} + > + 広告登録 + +
+ + )}
+ {isOpen && ( + + )} ); }; diff --git a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx new file mode 100644 index 000000000..55738ef21 --- /dev/null +++ b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx @@ -0,0 +1,89 @@ +import { clsx } from 'clsx'; +import React, { FC, useRef, useState } from 'react'; +import { RiCloseCircleLine } from 'react-icons/ri'; + +import { DESIGN_PROGRESSES } from '@constants/designProgresses'; +import { Modal } from '@components/common'; +import { SponsorActivityInformation, SponsorActivityView } from '@type/common'; +import { FaChevronCircleLeft } from 'react-icons/fa'; +import { OutlinePrimaryButton, PrimaryButton, RedButton } from '../common'; +import { saveAs } from 'file-saver'; + +interface ModalProps { + setIsOpen: (isOpen: boolean) => void; + children?: React.ReactNode; + id: React.ReactNode; + sponsorActivityInformation?: SponsorActivityInformation | null; +} + +const UplaodFileModal: FC = (props) => { + const fileInputRef = useRef(null); + const [imageFile, setImageFile] = useState(null); + const [uploadImageURL, setUploadImageURL] = useState(''); + const [preview, setPreview] = useState({ uploadImageURL: '', type: '' }); + + const handleFileChange = (e: React.ChangeEvent) => { + const targetFile = e.target.files?.[0]!; + setImageFile(targetFile); + setPreview({ uploadImageURL: URL.createObjectURL(targetFile), type: targetFile.type }); + setUploadImageURL(URL.createObjectURL(targetFile)); + }; + + const handleFileDelete = () => { + setImageFile(null); + setPreview({ uploadImageURL: '', type: '' }); + setUploadImageURL(''); + props.setIsOpen(false); + }; + + const submit = async () => { + if (!imageFile) { + return; + } + const formData = new FormData(); + formData.append('file', imageFile); + const fileName = imageFile?.name || ''; + formData.append('fileName', fileName); + + await fetch('/api/minio', { + method: 'POST', + + body: formData, + }) + .then((response) => response.json()) + .then((data) => console.log(data)) + .catch((error) => console.error('Error:', error)); + }; + + const onClose = () => { + props.setIsOpen(false); + }; + + console.log(props.sponsorActivityInformation); + return ( + +
+
+ +
+
+
+ +
+ +
+ {preview.type === 'application/pdf' ? ( + + ) : ( + preview.type !== '' && + )} +
+
+ ); +}; + +export default UplaodFileModal; From c8acb393e7ea2335eb3647f1c597fa54ec3643d5 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 13:40:22 +0900 Subject: [PATCH 037/113] =?UTF-8?q?[fix]=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=82=A2=E3=83=83=E3=83=97=E3=83=AD=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=81=AE=E3=82=B9=E3=82=BF=E3=82=A4=E3=83=AB=E7=B7=A8=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/sponsoractivities/UploadFileModal.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx index 55738ef21..3bd21adc7 100644 --- a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx +++ b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx @@ -56,6 +56,7 @@ const UplaodFileModal: FC = (props) => { }; const onClose = () => { + handleFileDelete(); props.setIsOpen(false); }; @@ -68,9 +69,13 @@ const UplaodFileModal: FC = (props) => {
- +
-
{preview.type === 'application/pdf' ? ( Date: Wed, 20 Mar 2024 18:24:40 +0900 Subject: [PATCH 038/113] =?UTF-8?q?[feat]=E3=83=87=E3=82=B6=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=81=AE=E8=BF=BD=E5=8A=A0=E3=83=BB=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/docs/docs.go | 36 ++-- .../activity_information_controller.go | 2 +- view/Dockerfile | 2 +- view/next-project/.env | 1 + .../sponsoractivities/DetailModal.tsx | 14 +- .../sponsoractivities/DetailPage1.tsx | 2 +- .../sponsoractivities/DetailPage2.tsx | 197 ++++++++++++------ .../sponsoractivities/UploadFileModal.tsx | 94 +++++++-- view/next-project/src/pages/api/minio.tsx | 9 +- .../src/pages/sponsoractivities/index.tsx | 23 +- 10 files changed, 255 insertions(+), 125 deletions(-) diff --git a/api/docs/docs.go b/api/docs/docs.go index f279e93e5..e06eb3d44 100644 --- a/api/docs/docs.go +++ b/api/docs/docs.go @@ -56,26 +56,26 @@ const docTemplate = `{ } }, }, - "/activities/details/{year}": { - "get": { - tags: ["activity"], - "description": "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得", - "parameters": [ - { - "name": "year", - "in": "path", - "description": "year", - "required": true, - "type": "integer" - } - ], - "responses": { - "200": { - "description": "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得", - } + "/activities/details/{year}": { + "get": { + tags: ["activity"], + "description": "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得", + "parameters": [ + { + "name": "year", + "in": "path", + "description": "year", + "required": true, + "type": "integer" } - }, + ], + "responses": { + "200": { + "description": "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得", + } + } }, + }, "/activities/{id}": { "get": { tags: ["activity"], diff --git a/api/externals/controller/activity_information_controller.go b/api/externals/controller/activity_information_controller.go index 96cf5616c..1c2e8f0b1 100644 --- a/api/externals/controller/activity_information_controller.go +++ b/api/externals/controller/activity_information_controller.go @@ -93,5 +93,5 @@ func (a *activityInformationController) DestroyActivityInformation(c echo.Contex if err != nil { return err } - return c.String(http.StatusOK, "Destroy ActivityInformations") + return c.JSON(http.StatusOK, "Destroy ActivityInformations") } diff --git a/view/Dockerfile b/view/Dockerfile index 58b970642..790b52e59 100644 --- a/view/Dockerfile +++ b/view/Dockerfile @@ -1,5 +1,5 @@ # ベースイメージの作成 -FROM node:20 +FROM node:16.13.0 # コンテナ内で作業するディレクトリを指定 WORKDIR /app/next-project COPY ./ /app diff --git a/view/next-project/.env b/view/next-project/.env index eed28dde5..0a04f069f 100644 --- a/view/next-project/.env +++ b/view/next-project/.env @@ -2,3 +2,4 @@ NEXT_PUBLIC_ENDPOINT='192.168.176.1' NEXT_PUBLIC_PORT=9000 NEXT_PUBLIC_ACCESS_KEY='bE5KYqihEcEXMrgkVhZn' NEXT_PUBLIC_SECRET_KEY='oQvamjXnAvrsyneZdluX7S49TfRi0na6AO8WNPuL' +NEXT_PUBLIC_BUCKET_NAME='finansu' diff --git a/view/next-project/src/components/sponsoractivities/DetailModal.tsx b/view/next-project/src/components/sponsoractivities/DetailModal.tsx index 0fe857995..80db15935 100644 --- a/view/next-project/src/components/sponsoractivities/DetailModal.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailModal.tsx @@ -1,5 +1,6 @@ import { clsx } from 'clsx'; import React, { FC, useState } from 'react'; +import { useRouter } from 'next/router'; import { RiCloseCircleLine } from 'react-icons/ri'; import { Modal } from '@components/common'; @@ -18,8 +19,15 @@ interface ModalProps { } const DetailModal: FC = (props) => { + const [isChange, setIsChange] = useState(false); + const [sponsorActivitiesView, setSponsorActivitiesView] = useState( + props.sponsorActivitiesViewItem, + ); + + const router = useRouter(); const onClose = () => { props.setIsOpen(false); + isChange && router.reload(); }; const [pageNum, setPageNum] = useState(1); @@ -39,15 +47,17 @@ const DetailModal: FC = (props) => { {pageNum === 1 && ( )} {pageNum === 2 && ( )} diff --git a/view/next-project/src/components/sponsoractivities/DetailPage1.tsx b/view/next-project/src/components/sponsoractivities/DetailPage1.tsx index 5d23e4d53..45585c8d4 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage1.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage1.tsx @@ -168,7 +168,7 @@ const DetailPage1: FC = (props) => {
-
diff --git a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx index e29504c99..01426bcd1 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx @@ -1,10 +1,12 @@ import { clsx } from 'clsx'; -import React, { FC, useState } from 'react'; +import React, { FC, useEffect, useState } from 'react'; +import { post, del } from '@/utils/api/api_methods'; import { DESIGN_PROGRESSES } from '@constants/designProgresses'; import { SponsorActivityView, SponsorActivityInformation } from '@type/common'; import { FaChevronCircleLeft } from 'react-icons/fa'; -import { OutlinePrimaryButton, PrimaryButton, RedButton } from '../common'; +import { FiPlusSquare } from 'react-icons/fi'; +import { DeleteButton, OutlinePrimaryButton, PrimaryButton, RedButton } from '../common'; import { saveAs } from 'file-saver'; import UplaodFileModal from './UploadFileModal'; @@ -13,6 +15,8 @@ interface ModalProps { children?: React.ReactNode; id: React.ReactNode; sponsorActivitiesViewItem: SponsorActivityView; + setIsChange: (isChange: boolean) => void; + setSponsorActivitiesView: (sponsorActivitiesView: SponsorActivityView) => void; } const DetailPage2: FC = (props) => { @@ -20,10 +24,19 @@ const DetailPage2: FC = (props) => { props.setPageNum(1); }; const [isOpen, setIsOpen] = useState(false); - const [editActivityInformation, setEditActivityInformation] = - useState(null); + const [editActivityInformationId, setEditActivityInformationId] = useState(0); - const sponsorActivityInformations = props.sponsorActivitiesViewItem.sponsorActivityInformations; + const [sponsorActivityInformations, setSponsorActivityInformations] = useState< + SponsorActivityInformation[] + >(props.sponsorActivitiesViewItem.sponsorActivityInformations || []); + + useEffect(() => { + const newSponsorActivitiesView = { + ...props.sponsorActivitiesViewItem, + sponsorActivityInformations: sponsorActivityInformations, + }; + props.setSponsorActivitiesView(newSponsorActivitiesView); + }, [sponsorActivityInformations]); const designProgresses = sponsorActivityInformations && @@ -45,10 +58,46 @@ const DetailPage2: FC = (props) => { const download = async (url: string, fileName: string) => { const response = await fetch(url); const blob = await response.blob(); - saveAs(blob, fileName); }; + const handleDelete = async (id: number, activityInformation: SponsorActivityInformation) => { + const deleteSponsorActivityInformationUrl = + process.env.CSR_API_URI + '/activity_informations/' + String(id); + const newSponsorActivityInformations = sponsorActivityInformations.filter( + (sponsorActivityInformation) => sponsorActivityInformation.id !== id, + ); + console.log(newSponsorActivityInformations); + if (activityInformation.fileName === '') { + const res = await del(deleteSponsorActivityInformationUrl); + } else { + const confirm = window.confirm('本当に削除してよろしいですか?'); + if (confirm) { + const res = await del(deleteSponsorActivityInformationUrl); + } else { + window.alert('キャンセルしました'); + return; + } + } + setSponsorActivityInformations(newSponsorActivityInformations); + props.setIsChange(true); + }; + + const createInfomation = async () => { + const sponsorActivitiesUrl = process.env.CSR_API_URI + '/activity_informations'; + const nullData = { + activityID: props.sponsorActivitiesViewItem.sponsorActivity.id || 0, + bucketName: '', + fileName: '', + fileType: '', + designProgress: 1, + }; + const res = await post(sponsorActivitiesUrl, nullData); + const newSponsorActivityInformations = [...sponsorActivityInformations, res]; + setSponsorActivityInformations(newSponsorActivityInformations); + props.setIsChange(true); + }; + return ( <>

協賛スタイル

@@ -103,79 +152,97 @@ const DetailPage2: FC = (props) => { {sponsorActivityInformations && sponsorActivityInformations.map((activityInformation, index) => ( <> -
-
-

広告の状況

-

- {designProgresses && designProgresses[index].state} -

+
+
+
-
-
- {activityInformation?.fileType === 'application/pdf' && - activityInformation?.fileName && ( - +
+
+
+

広告の状況

+

+ {designProgresses && designProgresses[index].state} +

+
+
+
+ {activityInformation?.fileType === 'application/pdf' && + activityInformation?.fileName && ( + + )} + {activityInformation.fileType !== 'application/pdf' && + activityInformation.fileName && ( + Picture of the author + )} +
+ {activityInformation.fileName !== '' && ( +
+ { + setEditActivityInformationId(index); + setIsOpen(true); + }} + > + 変更 + + + fileURLs && download(fileURLs[index], activityInformation.fileName || '') + } + > + ダウンロード + +
)} - {activityInformation.fileType !== 'application/pdf' && - activityInformation.fileName && ( - Picture of the author + {activityInformation.fileName === '' && ( +
+ { + setEditActivityInformationId(index); + setIsOpen(true); + }} + > + 広告登録 + +
)} -
-
- { - setEditActivityInformation(activityInformation); - setIsOpen(true); - }} - > - 変更 - - - fileURLs && download(fileURLs[index], activityInformation.fileName || '') - } - > - ダウンロード - +
))} - {!sponsorActivityInformations && ( - <> -
-
-

広告の状況

-

未回収

-
-
-
- { - setIsOpen(true); - }} - > - 広告登録 - -
- - )} +
+ +
-
{isOpen && ( )} diff --git a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx index 3bd21adc7..7e8c5ff98 100644 --- a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx +++ b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx @@ -2,37 +2,65 @@ import { clsx } from 'clsx'; import React, { FC, useRef, useState } from 'react'; import { RiCloseCircleLine } from 'react-icons/ri'; +import { post, put } from '@/utils/api/api_methods'; import { DESIGN_PROGRESSES } from '@constants/designProgresses'; import { Modal } from '@components/common'; import { SponsorActivityInformation, SponsorActivityView } from '@type/common'; -import { FaChevronCircleLeft } from 'react-icons/fa'; import { OutlinePrimaryButton, PrimaryButton, RedButton } from '../common'; -import { saveAs } from 'file-saver'; interface ModalProps { setIsOpen: (isOpen: boolean) => void; children?: React.ReactNode; - id: React.ReactNode; - sponsorActivityInformation?: SponsorActivityInformation | null; + id: number; + ActivityInformationId: number; + sponsorActivityInformations?: SponsorActivityInformation[]; + setSponsorActivityInformations: ( + sponsorActivityInformations: SponsorActivityInformation[], + ) => void; + setIsChange: (isChange: boolean) => void; } const UplaodFileModal: FC = (props) => { const fileInputRef = useRef(null); const [imageFile, setImageFile] = useState(null); - const [uploadImageURL, setUploadImageURL] = useState(''); const [preview, setPreview] = useState({ uploadImageURL: '', type: '' }); + const [activityInformation, setActivityInformation] = useState( + (props.sponsorActivityInformations && + props.sponsorActivityInformations[props.ActivityInformationId]) || { + activityID: props.id, + bucketName: '', + fileName: '', + fileType: '', + designProgress: 1, + }, + ); + + const sponsorActivityInformations = props.sponsorActivityInformations || []; const handleFileChange = (e: React.ChangeEvent) => { const targetFile = e.target.files?.[0]!; + if (!targetFile) { + setPreview({ uploadImageURL: '', type: '' }); + return; + } setImageFile(targetFile); setPreview({ uploadImageURL: URL.createObjectURL(targetFile), type: targetFile.type }); - setUploadImageURL(URL.createObjectURL(targetFile)); + + const bucketName = process.env.NEXT_PUBLIC_BUCKET_NAME; + const fileName = targetFile.name; + const fileType = targetFile.type; + + setActivityInformation({ + ...activityInformation, + bucketName: bucketName || '', + fileName: fileName, + fileType: fileType, + }); }; const handleFileDelete = () => { setImageFile(null); setPreview({ uploadImageURL: '', type: '' }); - setUploadImageURL(''); props.setIsOpen(false); }; @@ -45,22 +73,53 @@ const UplaodFileModal: FC = (props) => { const fileName = imageFile?.name || ''; formData.append('fileName', fileName); - await fetch('/api/minio', { + const response = await fetch('/api/minio', { method: 'POST', - body: formData, }) - .then((response) => response.json()) - .then((data) => console.log(data)) - .catch((error) => console.error('Error:', error)); + .then((response) => { + if (response.ok) { + return true; + } else { + alert('登録に失敗しました'); + return false; + } + }) + .catch((error) => { + console.error('Error:', error); + }); + + if (!response) { + onClose(); + return; + } + + const sponsorActivitiesUrl = + process.env.CSR_API_URI + '/activity_informations/' + activityInformation.id; + const res = await put(sponsorActivitiesUrl, activityInformation); + const newSponsorActivityInformations = sponsorActivityInformations.map( + (sponsorActivityInformation) => { + if (sponsorActivityInformation.id === activityInformation.id) { + return activityInformation; + } + return sponsorActivityInformation; + }, + ); + props.setSponsorActivityInformations(newSponsorActivityInformations); + + alert('保存しました'); + props.setIsChange(true); + + onClose(); }; + console.log(process.env.NEXT_PUBLIC_BUCKET_NAME); + const onClose = () => { handleFileDelete(); props.setIsOpen(false); }; - console.log(props.sponsorActivityInformation); return (
@@ -84,9 +143,16 @@ const UplaodFileModal: FC = (props) => { className='mx-auto object-scale-down ' /> ) : ( - preview.type !== '' && + preview.type !== '' && ( + + ) )}
+
+ submit()} disabled={!imageFile}> + 登録 + +
); }; diff --git a/view/next-project/src/pages/api/minio.tsx b/view/next-project/src/pages/api/minio.tsx index 50a41f070..dddffb696 100644 --- a/view/next-project/src/pages/api/minio.tsx +++ b/view/next-project/src/pages/api/minio.tsx @@ -42,13 +42,14 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) fs.createReadStream(files.file[0].filepath), metaData, ); - - res.status(200).json({ response }); } catch (err) { + res.status(400).json({ message: '失敗' }); throw new Error('Error uploading file (' + err + ')'); } + return res.status(200).json({ message: '成功' }); }); } + if (req.method === 'GET') { try { var size = 0; @@ -59,9 +60,9 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) console.log('success'); }); - console.log(response); - res.status(200).json({ response }); + res.status(200).json({ response: response }); } catch (err) { + res.status(400); throw new Error('Error uploading file (' + err + ')'); } } diff --git a/view/next-project/src/pages/sponsoractivities/index.tsx b/view/next-project/src/pages/sponsoractivities/index.tsx index c096fe53d..2ea5bee2e 100644 --- a/view/next-project/src/pages/sponsoractivities/index.tsx +++ b/view/next-project/src/pages/sponsoractivities/index.tsx @@ -107,14 +107,12 @@ export default function SponsorActivities(props: Props) { process.env.CSR_API_URI + '/activities/details/' + selectedYear; const getSponsorActivitiesByYears = await get(getSponsorActivitiesViewUrlByYear); setSponsorActivitiesViews(getSponsorActivitiesByYears); - console.log(getSponsorActivitiesViewUrlByYear); }; const currentYear = new Date().getFullYear().toString(); const [selectedIsDone, setSelectedIsDone] = useState('all'); const [selectedSort, setSelectedSort] = useState('default'); - console.log(sponsorActivities); const sortedAndFilteredSponsorActivitiesViews = useMemo(() => { let filteredActivities = sponsorActivities; @@ -419,9 +417,6 @@ export default function SponsorActivities(props: Props) {
交通費
- -
作成日時
-
@@ -430,7 +425,10 @@ export default function SponsorActivities(props: Props) { {sortedAndFilteredSponsorActivitiesViews && sortedAndFilteredSponsorActivitiesViews.map((sponsorActivitiesItem) => ( - + { onOpen( @@ -539,19 +537,6 @@ export default function SponsorActivities(props: Props) { {sponsorActivitiesItem.sponsorActivity.expense}
- { - onOpen( - sponsorActivitiesItem.sponsorActivity.id || 0, - sponsorActivitiesItem, - ); - }} - > -
- {sponsorActivitiesItem.sponsorActivity.createdAt && - formatDate(sponsorActivitiesItem.sponsorActivity.createdAt)} -
-
From 0404ce3a0782a66f97c427156fdd100a581fb46f Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 18:58:37 +0900 Subject: [PATCH 039/113] =?UTF-8?q?[fix]lint=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/InputImage/Input.module.css | 5 - .../common/InputImage/InputImage.tsx | 29 ---- .../src/components/common/InputImage/index.ts | 1 - .../src/components/common/index.ts | 1 - .../sponsoractivities/DetailModal.tsx | 8 +- .../sponsoractivities/DetailPage1.tsx | 4 +- .../sponsoractivities/DetailPage2.tsx | 10 +- .../sponsoractivities/UploadFileModal.tsx | 10 +- .../src/pages/api/img/icons8-mysql-240.png | Bin 5853 -> 0 bytes view/next-project/src/pages/api/minio.tsx | 26 ++-- .../src/pages/miniotest/index.tsx | 135 ------------------ 11 files changed, 28 insertions(+), 201 deletions(-) delete mode 100644 view/next-project/src/components/common/InputImage/Input.module.css delete mode 100644 view/next-project/src/components/common/InputImage/InputImage.tsx delete mode 100644 view/next-project/src/components/common/InputImage/index.ts delete mode 100644 view/next-project/src/pages/api/img/icons8-mysql-240.png delete mode 100644 view/next-project/src/pages/miniotest/index.tsx diff --git a/view/next-project/src/components/common/InputImage/Input.module.css b/view/next-project/src/components/common/InputImage/Input.module.css deleted file mode 100644 index a0ee10c0d..000000000 --- a/view/next-project/src/components/common/InputImage/Input.module.css +++ /dev/null @@ -1,5 +0,0 @@ -.input:focus { - border-color: #48b2cf; - border-width: 1.75px; - outline: none; -} diff --git a/view/next-project/src/components/common/InputImage/InputImage.tsx b/view/next-project/src/components/common/InputImage/InputImage.tsx deleted file mode 100644 index 0bc212a1d..000000000 --- a/view/next-project/src/components/common/InputImage/InputImage.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import clsx from 'clsx'; -import React, { InputHTMLAttributes, forwardRef } from 'react'; - -import s from './Input.module.css'; - -export interface Props { - className?: string; - placeholder?: string; - id: InputHTMLAttributes['id']; - value?: string | number; - onChange?: (e: React.ChangeEvent) => void; - children?: React.ReactNode; - type?: string; - datalist?: { - key: string; - data: { id: number; name: string }[]; - }; -} - -const InputImage = forwardRef(({ onChange, id }, ref) => { - const className = 'rounded-full border border-primary-1 py-2 px-4'; - return ( -
- -
- ); -}); - -export default InputImage; diff --git a/view/next-project/src/components/common/InputImage/index.ts b/view/next-project/src/components/common/InputImage/index.ts deleted file mode 100644 index 1f00547bb..000000000 --- a/view/next-project/src/components/common/InputImage/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './InputImage'; diff --git a/view/next-project/src/components/common/index.ts b/view/next-project/src/components/common/index.ts index ac747a9c2..3518632b1 100644 --- a/view/next-project/src/components/common/index.ts +++ b/view/next-project/src/components/common/index.ts @@ -8,7 +8,6 @@ export { default as DeleteButton } from './DeleteButton'; export { default as Dropdown } from './Dropdown'; export { default as EditButton } from './EditButton'; export { default as Input } from './Input'; -export { default as InputImage } from './InputImage'; export { default as Modal } from './Modal'; export { default as OutlinePrimaryButton } from './OutlinePrimaryButton'; export { default as PrimaryButton } from './PrimaryButton'; diff --git a/view/next-project/src/components/sponsoractivities/DetailModal.tsx b/view/next-project/src/components/sponsoractivities/DetailModal.tsx index 80db15935..e160df827 100644 --- a/view/next-project/src/components/sponsoractivities/DetailModal.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailModal.tsx @@ -1,13 +1,11 @@ -import { clsx } from 'clsx'; -import React, { FC, useState } from 'react'; import { useRouter } from 'next/router'; +import React, { FC, useState } from 'react'; import { RiCloseCircleLine } from 'react-icons/ri'; -import { Modal } from '@components/common'; -import { DESIGNERS } from '@constants/designers'; -import { SponsorActivityView } from '@type/common'; import DetailPage1 from './DetailPage1'; import DetailPage2 from './DetailPage2'; +import { Modal } from '@components/common'; +import { SponsorActivityView } from '@type/common'; interface ModalProps { isOpen: boolean; diff --git a/view/next-project/src/components/sponsoractivities/DetailPage1.tsx b/view/next-project/src/components/sponsoractivities/DetailPage1.tsx index 45585c8d4..5811717ff 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage1.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage1.tsx @@ -1,11 +1,9 @@ import { clsx } from 'clsx'; import React, { FC } from 'react'; -import { RiCloseCircleLine } from 'react-icons/ri'; -import { Modal } from '@components/common'; +import { FaChevronCircleRight } from 'react-icons/fa'; import { DESIGNERS } from '@constants/designers'; import { SponsorActivityView } from '@type/common'; -import { FaChevronCircleRight } from 'react-icons/fa'; interface ModalProps { setPageNum: (isOpen: number) => void; diff --git a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx index 01426bcd1..c821069bb 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx @@ -1,14 +1,14 @@ import { clsx } from 'clsx'; +import { saveAs } from 'file-saver'; import React, { FC, useEffect, useState } from 'react'; -import { post, del } from '@/utils/api/api_methods'; -import { DESIGN_PROGRESSES } from '@constants/designProgresses'; -import { SponsorActivityView, SponsorActivityInformation } from '@type/common'; import { FaChevronCircleLeft } from 'react-icons/fa'; import { FiPlusSquare } from 'react-icons/fi'; -import { DeleteButton, OutlinePrimaryButton, PrimaryButton, RedButton } from '../common'; -import { saveAs } from 'file-saver'; +import { DeleteButton, OutlinePrimaryButton, PrimaryButton } from '../common'; import UplaodFileModal from './UploadFileModal'; +import { post, del } from '@/utils/api/api_methods'; +import { DESIGN_PROGRESSES } from '@constants/designProgresses'; +import { SponsorActivityView, SponsorActivityInformation } from '@type/common'; interface ModalProps { setPageNum: (isOpen: number) => void; diff --git a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx index 7e8c5ff98..024f64885 100644 --- a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx +++ b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx @@ -1,12 +1,10 @@ -import { clsx } from 'clsx'; import React, { FC, useRef, useState } from 'react'; import { RiCloseCircleLine } from 'react-icons/ri'; -import { post, put } from '@/utils/api/api_methods'; -import { DESIGN_PROGRESSES } from '@constants/designProgresses'; +import { PrimaryButton } from '../common'; +import { put } from '@/utils/api/api_methods'; import { Modal } from '@components/common'; -import { SponsorActivityInformation, SponsorActivityView } from '@type/common'; -import { OutlinePrimaryButton, PrimaryButton, RedButton } from '../common'; +import { SponsorActivityInformation } from '@type/common'; interface ModalProps { setIsOpen: (isOpen: boolean) => void; @@ -38,7 +36,7 @@ const UplaodFileModal: FC = (props) => { const sponsorActivityInformations = props.sponsorActivityInformations || []; const handleFileChange = (e: React.ChangeEvent) => { - const targetFile = e.target.files?.[0]!; + const targetFile = e.target.files![0]!; if (!targetFile) { setPreview({ uploadImageURL: '', type: '' }); return; diff --git a/view/next-project/src/pages/api/img/icons8-mysql-240.png b/view/next-project/src/pages/api/img/icons8-mysql-240.png deleted file mode 100644 index f355a7094deb75804d9b303d200a5557c15fd977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5853 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 YcUt;~{%IR;%zqAbH4PtD-nW1AKk?Z;Z~y=R diff --git a/view/next-project/src/pages/api/minio.tsx b/view/next-project/src/pages/api/minio.tsx index dddffb696..cbf903c96 100644 --- a/view/next-project/src/pages/api/minio.tsx +++ b/view/next-project/src/pages/api/minio.tsx @@ -1,7 +1,7 @@ import fs from 'fs'; -import { NextApiRequest, NextApiResponse } from 'next'; import { formidable } from 'formidable'; -import * as Minio from 'minio'; +import { Client } from 'minio'; +import { NextApiRequest, NextApiResponse } from 'next'; export const config = { api: { @@ -9,7 +9,7 @@ export const config = { }, }; -const minioClient = new Minio.Client({ +const minioClient = new Client({ endPoint: process.env.NEXT_PUBLIC_ENDPOINT || '', port: Number(process.env.NEXT_PUBLIC_PORT), accessKey: process.env.NEXT_PUBLIC_ACCESS_KEY || '', @@ -20,7 +20,6 @@ const minioClient = new Minio.Client({ export default async function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method === 'POST') { const form = formidable(); - const fs = require('fs'); form.parse(req, async (err, fields, files: any) => { if (err) { @@ -52,13 +51,18 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) if (req.method === 'GET') { try { - var size = 0; - const response = minioClient.fGetObject('finansu', 'go.png', '/tmp/go.png', function (err) { - if (err) { - return console.log(err); - } - console.log('success'); - }); + const size = 0; + const response = minioClient.fGetObject( + 'finansu', + 'go.png', + '/tmp/go.png', + function (err: any) { + if (err) { + return console.log(err); + } + console.log('success'); + }, + ); res.status(200).json({ response: response }); } catch (err) { diff --git a/view/next-project/src/pages/miniotest/index.tsx b/view/next-project/src/pages/miniotest/index.tsx deleted file mode 100644 index 34aa96a5a..000000000 --- a/view/next-project/src/pages/miniotest/index.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import MainLayout from '@components/layout/MainLayout/MainLayout'; -import * as Minio from 'minio'; -import React, { useState, useEffect, useRef, InputHTMLAttributes, forwardRef } from 'react'; -import { InputImage, PrimaryButton } from '@/components/common'; -import { saveAs } from 'file-saver'; - -type Args = { - file: File | null; -}; - -export const useGetImageUrl = ({ file }: Args) => { - const [imageUrl, setImageUrl] = useState(''); - - useEffect(() => { - if (!file) { - return; - } - - let reader: FileReader | null = new FileReader(); - reader.onloadend = () => { - const base64 = reader && reader.result; - if (base64 && typeof base64 === 'string') { - setImageUrl(base64); - } - }; - reader.readAsDataURL(file); - - return () => { - reader = null; - }; - }, [file]); - - return { - imageUrl, - }; -}; - -interface Props { - number: number; -} - -export const getServerSideProps = async () => { - return { - props: { - number: 1, - }, - }; -}; - -export default function MinioTest(props: Props) { - const fileInputRef = useRef(null); - const [imageFile, setImageFile] = useState(null); - const [uploadImageURL, setUploadImageURL] = useState(''); - const [preview, setPreview] = useState({ uploadImageURL: '', type: '' }); - - const handleFileChange = (e: React.ChangeEvent) => { - const targetFile = e.target.files?.[0]!; - setImageFile(targetFile); - setPreview({ uploadImageURL: URL.createObjectURL(targetFile), type: targetFile.type }); - setUploadImageURL(URL.createObjectURL(targetFile)); - }; - - const submit = async () => { - if (!imageFile) { - return; - } - const formData = new FormData(); - formData.append('file', imageFile); - const fileName = imageFile?.name || ''; - formData.append('fileName', fileName); - - await fetch('/api/minio', { - method: 'POST', - - body: formData, - }) - .then((response) => response.json()) - .then((data) => console.log(data)) - .catch((error) => console.error('Error:', error)); - }; - - const download = async () => { - const fileName = '令和6年3月学部卒業者一覧.pdf'; - const path = `http://127.0.0.1:9000/finansu/令和6年3月学部卒業者一覧.pdf`; - - const response = await fetch(path); - const blob = await response.blob(); - - saveAs(blob, fileName); - }; - - return ( - <> -
- - submit()}> - 送信 - -
- - {preview.type === 'application/pdf' ? ( - - ) : ( - preview.type !== '' && - )} -
-
- download()}> - ダウンロード - -
-
- 画像表示テスト - - - Picture of the author -
- - ); -} From 9e38c15ee8a75ecad99746a50d5c2c8d24c0c331 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Wed, 20 Mar 2024 19:20:39 +0900 Subject: [PATCH 040/113] =?UTF-8?q?[feat]=20react-pdf=E3=81=AE=E5=B0=8E?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/next-project/package-lock.json | 986 +++++++++++++++++++++++++++- view/next-project/package.json | 1 + 2 files changed, 955 insertions(+), 32 deletions(-) diff --git a/view/next-project/package-lock.json b/view/next-project/package-lock.json index 0d9377177..fcb5c2f59 100644 --- a/view/next-project/package-lock.json +++ b/view/next-project/package-lock.json @@ -12,6 +12,7 @@ "@emotion/styled": "^11.6.0", "@fontsource/noto-sans-jp": "^4.5.2", "@pdf-lib/fontkit": "^1.1.1", + "@react-pdf/renderer": "^3.4.0", "@types/react-select": "^5.0.1", "clsx": "^1.2.1", "date-fns": "^2.30.0", @@ -1879,6 +1880,167 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@react-pdf/fns": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.2.1.tgz", + "integrity": "sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==", + "dependencies": { + "@babel/runtime": "^7.20.13" + } + }, + "node_modules/@react-pdf/font": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.4.4.tgz", + "integrity": "sha512-yjK5eSY+LcbxS0m+sOYln8GdgIbUgti4xjwf14kx8OSsOMJQJyHFALHMh2cLcKJR9yZeqVDo1FwCsY6gw1yCkg==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/types": "^2.4.1", + "cross-fetch": "^3.1.5", + "fontkit": "^2.0.2", + "is-url": "^1.2.4" + } + }, + "node_modules/@react-pdf/image": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.5.tgz", + "integrity": "sha512-YK8oeD4cYTbX2KwdsY5DEDpvsKQoGbf3kwlxAQwYm8wrEol8V/5oCl8H8ZqdZIYQhx2XPp63cocQfMCZGwf+4w==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/png-js": "^2.3.1", + "cross-fetch": "^3.1.5", + "jay-peg": "^1.0.1" + } + }, + "node_modules/@react-pdf/layout": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.11.3.tgz", + "integrity": "sha512-SwfIWmZl3yZDgb4Qa9ebjAZTd/FyI5E2curSfra6SuAkrsEF037cmVfxCTgYCkPwpVMv/omOENPI+WjhOKPofA==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/image": "^2.3.5", + "@react-pdf/pdfkit": "^3.1.7", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/stylesheet": "^4.2.4", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.4.1", + "cross-fetch": "^3.1.5", + "emoji-regex": "^10.3.0", + "queue": "^6.0.1", + "yoga-layout": "^2.0.1" + } + }, + "node_modules/@react-pdf/layout/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + }, + "node_modules/@react-pdf/pdfkit": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.1.7.tgz", + "integrity": "sha512-iXMmATqW5Aycpzm8nNsZOHV/DX2lpd8l5VkaTy1HjzHgQ3MHoV45BHwRph53soEqoPo7rUfpjuSi7X3hngPWGA==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/png-js": "^2.3.1", + "browserify-zlib": "^0.2.0", + "crypto-js": "^4.2.0", + "fontkit": "^2.0.2", + "jay-peg": "^1.0.1", + "vite-compatible-readable-stream": "^3.6.1" + } + }, + "node_modules/@react-pdf/png-js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.3.1.tgz", + "integrity": "sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg==", + "dependencies": { + "browserify-zlib": "^0.2.0" + } + }, + "node_modules/@react-pdf/primitives": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.1.1.tgz", + "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==" + }, + "node_modules/@react-pdf/render": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.4.3.tgz", + "integrity": "sha512-9LL059vfwrK1gA0uIA4utpQ/pUH9EW/yia4bb7pCoARs8IlupY5UP265jgax15ua0p+MdUwShZzQ9rilu7kGsw==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.4.1", + "abs-svg-path": "^0.1.1", + "color-string": "^1.9.1", + "normalize-svg-path": "^1.1.0", + "parse-svg-path": "^0.1.2", + "svg-arc-to-cubic-bezier": "^3.2.0" + } + }, + "node_modules/@react-pdf/renderer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-3.4.0.tgz", + "integrity": "sha512-8i/B8xJZ4AwINM/RRBnawBXfNACaehQT/bM19TOTUjHoddYaRKM1g1+qOZx58yfxfr5TFRs4fORxEPU1mGmR1A==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/font": "^2.4.4", + "@react-pdf/layout": "^3.11.3", + "@react-pdf/pdfkit": "^3.1.7", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/render": "^3.4.3", + "@react-pdf/types": "^2.4.1", + "events": "^3.3.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "queue": "^6.0.1", + "scheduler": "^0.17.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-pdf/renderer/node_modules/scheduler": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz", + "integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@react-pdf/stylesheet": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.2.4.tgz", + "integrity": "sha512-CgRfDzeMtnV0GL7zSn381NubmgwqKhFKcK1YrWX3azl/KWVh52jjFd3HWi6dvcETNT862mjWz5MnExe4WOBJXA==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/types": "^2.4.1", + "color-string": "^1.9.1", + "hsl-to-hex": "^1.0.0", + "media-engine": "^1.0.3", + "postcss-value-parser": "^4.1.0" + } + }, + "node_modules/@react-pdf/textkit": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.4.1.tgz", + "integrity": "sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "bidi-js": "^1.0.2", + "hyphen": "^1.6.4", + "unicode-properties": "^1.4.1" + } + }, + "node_modules/@react-pdf/types": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.4.1.tgz", + "integrity": "sha512-w8pk7svhjVj5f7d7kjEGXSk26ffCqRSQcgWR4DwcFltNpSM18ZJmzmM6WrNeeP437y48LlykLnmGDA3oATakgw==" + }, "node_modules/@remix-run/router": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.1.tgz", @@ -2241,6 +2403,11 @@ "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz", "integrity": "sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA==" }, + "node_modules/abs-svg-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==" + }, "node_modules/acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -2528,6 +2695,33 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -2577,6 +2771,22 @@ "node": ">=8" } }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, "node_modules/browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", @@ -2737,6 +2947,14 @@ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -2760,8 +2978,16 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "node_modules/color2k": { "version": "2.0.2", @@ -2814,6 +3040,33 @@ "node": ">=10" } }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2828,6 +3081,11 @@ "node": ">= 8" } }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, "node_modules/css-box-model": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", @@ -3005,6 +3263,11 @@ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -3723,6 +3986,14 @@ "node": ">=0.10.0" } }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/execa": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", @@ -3749,13 +4020,12 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3894,6 +4164,31 @@ "node": ">=10" } }, + "node_modules/fontkit": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.2.tgz", + "integrity": "sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA==", + "dependencies": { + "@swc/helpers": "^0.4.2", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/fontkit/node_modules/@swc/helpers": { + "version": "0.4.36", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", + "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", + "dependencies": { + "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", + "tslib": "^2.4.0" + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -4306,6 +4601,19 @@ "react-is": "^16.7.0" } }, + "node_modules/hsl-to-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-to-hex/-/hsl-to-hex-1.0.0.tgz", + "integrity": "sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==", + "dependencies": { + "hsl-to-rgb-for-reals": "^1.1.0" + } + }, + "node_modules/hsl-to-rgb-for-reals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hsl-to-rgb-for-reals/-/hsl-to-rgb-for-reals-1.1.1.tgz", + "integrity": "sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==" + }, "node_modules/human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -4315,6 +4623,11 @@ "node": ">=14.18.0" } }, + "node_modules/hyphen": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.10.4.tgz", + "integrity": "sha512-SejXzIpv9gOVdDWXd4suM1fdF1k2dxZGvuTdkOVLoazYfK7O4DykIQbdrvuyG+EaTNlXAGhMndtKrhykgbt0gg==" + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -4699,6 +5012,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, "node_modules/is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -4772,10 +5090,18 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/jay-peg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.0.1.tgz", + "integrity": "sha512-zBfjkGbuuNXk8JW+rEePpPEbRRjupS8q+5yPak7kjy3e2GvvNwsLle9okEFvfGyZA6HvtSSiYrVd1/jgnYebaQ==", + "dependencies": { + "restructure": "^3.0.0" + } + }, "node_modules/jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "bin": { "jiti": "bin/jiti.js" } @@ -4864,6 +5190,15 @@ "language-subtag-registry": "~0.3.2" } }, + "node_modules/legacy-swc-helpers": { + "name": "@swc/helpers", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4954,6 +5289,11 @@ "node": ">=10" } }, + "node_modules/media-engine": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/media-engine/-/media-engine-1.0.3.tgz", + "integrity": "sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==" + }, "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", @@ -5196,6 +5536,14 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-svg-path": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz", + "integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==", + "dependencies": { + "svg-arc-to-cubic-bezier": "^3.0.0" + } + }, "node_modules/npm-run-path": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", @@ -5473,6 +5821,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5730,6 +6083,14 @@ "node": ">=6" } }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -6059,6 +6420,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -6083,6 +6452,11 @@ "node": ">=4" } }, + "node_modules/restructure": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.1.tgz", + "integrity": "sha512-6neDpI/yE9eogQo22qmWwKIA9wFPRyYjQleDEh6zaNAf2ZPqLJYUvNBJBWEWNoBlCeQMQkvIOe2YI/K2GOag+g==" + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -6233,6 +6607,25 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -6311,6 +6704,19 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -6356,6 +6762,14 @@ "node": ">=10.0.0" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", @@ -6572,6 +6986,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==" + }, "node_modules/synckit": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", @@ -6589,19 +7008,19 @@ } }, "node_modules/tailwindcss": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", - "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.0", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.18.2", + "jiti": "^1.19.1", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", @@ -6613,7 +7032,6 @@ "postcss-load-config": "^4.0.1", "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", "resolve": "^1.22.2", "sucrase": "^3.32.0" }, @@ -6695,6 +7113,11 @@ "node": ">=0.8" } }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, "node_modules/tiny-invariant": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", @@ -6736,6 +7159,11 @@ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -6824,6 +7252,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -6931,6 +7382,19 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/vite-compatible-readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/vite-compatible-readable-stream/-/vite-compatible-readable-stream-3.6.1.tgz", + "integrity": "sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/web-streams-polyfill": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", @@ -6939,6 +7403,20 @@ "node": ">= 8" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7045,6 +7523,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoga-layout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-2.0.1.tgz", + "integrity": "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==" + }, "node_modules/zod": { "version": "3.21.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", @@ -8421,6 +8904,168 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==" }, + "@react-pdf/fns": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.2.1.tgz", + "integrity": "sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==", + "requires": { + "@babel/runtime": "^7.20.13" + } + }, + "@react-pdf/font": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.4.4.tgz", + "integrity": "sha512-yjK5eSY+LcbxS0m+sOYln8GdgIbUgti4xjwf14kx8OSsOMJQJyHFALHMh2cLcKJR9yZeqVDo1FwCsY6gw1yCkg==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/types": "^2.4.1", + "cross-fetch": "^3.1.5", + "fontkit": "^2.0.2", + "is-url": "^1.2.4" + } + }, + "@react-pdf/image": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.5.tgz", + "integrity": "sha512-YK8oeD4cYTbX2KwdsY5DEDpvsKQoGbf3kwlxAQwYm8wrEol8V/5oCl8H8ZqdZIYQhx2XPp63cocQfMCZGwf+4w==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/png-js": "^2.3.1", + "cross-fetch": "^3.1.5", + "jay-peg": "^1.0.1" + } + }, + "@react-pdf/layout": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.11.3.tgz", + "integrity": "sha512-SwfIWmZl3yZDgb4Qa9ebjAZTd/FyI5E2curSfra6SuAkrsEF037cmVfxCTgYCkPwpVMv/omOENPI+WjhOKPofA==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/image": "^2.3.5", + "@react-pdf/pdfkit": "^3.1.7", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/stylesheet": "^4.2.4", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.4.1", + "cross-fetch": "^3.1.5", + "emoji-regex": "^10.3.0", + "queue": "^6.0.1", + "yoga-layout": "^2.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + } + } + }, + "@react-pdf/pdfkit": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.1.7.tgz", + "integrity": "sha512-iXMmATqW5Aycpzm8nNsZOHV/DX2lpd8l5VkaTy1HjzHgQ3MHoV45BHwRph53soEqoPo7rUfpjuSi7X3hngPWGA==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/png-js": "^2.3.1", + "browserify-zlib": "^0.2.0", + "crypto-js": "^4.2.0", + "fontkit": "^2.0.2", + "jay-peg": "^1.0.1", + "vite-compatible-readable-stream": "^3.6.1" + } + }, + "@react-pdf/png-js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.3.1.tgz", + "integrity": "sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg==", + "requires": { + "browserify-zlib": "^0.2.0" + } + }, + "@react-pdf/primitives": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.1.1.tgz", + "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==" + }, + "@react-pdf/render": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.4.3.tgz", + "integrity": "sha512-9LL059vfwrK1gA0uIA4utpQ/pUH9EW/yia4bb7pCoARs8IlupY5UP265jgax15ua0p+MdUwShZzQ9rilu7kGsw==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.4.1", + "abs-svg-path": "^0.1.1", + "color-string": "^1.9.1", + "normalize-svg-path": "^1.1.0", + "parse-svg-path": "^0.1.2", + "svg-arc-to-cubic-bezier": "^3.2.0" + } + }, + "@react-pdf/renderer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-3.4.0.tgz", + "integrity": "sha512-8i/B8xJZ4AwINM/RRBnawBXfNACaehQT/bM19TOTUjHoddYaRKM1g1+qOZx58yfxfr5TFRs4fORxEPU1mGmR1A==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/font": "^2.4.4", + "@react-pdf/layout": "^3.11.3", + "@react-pdf/pdfkit": "^3.1.7", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/render": "^3.4.3", + "@react-pdf/types": "^2.4.1", + "events": "^3.3.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "queue": "^6.0.1", + "scheduler": "^0.17.0" + }, + "dependencies": { + "scheduler": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz", + "integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@react-pdf/stylesheet": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.2.4.tgz", + "integrity": "sha512-CgRfDzeMtnV0GL7zSn381NubmgwqKhFKcK1YrWX3azl/KWVh52jjFd3HWi6dvcETNT862mjWz5MnExe4WOBJXA==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/types": "^2.4.1", + "color-string": "^1.9.1", + "hsl-to-hex": "^1.0.0", + "media-engine": "^1.0.3", + "postcss-value-parser": "^4.1.0" + } + }, + "@react-pdf/textkit": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.4.1.tgz", + "integrity": "sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "bidi-js": "^1.0.2", + "hyphen": "^1.6.4", + "unicode-properties": "^1.4.1" + } + }, + "@react-pdf/types": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.4.1.tgz", + "integrity": "sha512-w8pk7svhjVj5f7d7kjEGXSk26ffCqRSQcgWR4DwcFltNpSM18ZJmzmM6WrNeeP437y48LlykLnmGDA3oATakgw==" + }, "@remix-run/router": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.1.tgz", @@ -8678,6 +9323,11 @@ "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz", "integrity": "sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA==" }, + "abs-svg-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==" + }, "acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -8882,6 +9532,19 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "requires": { + "require-from-string": "^2.0.2" + } + }, "big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -8919,6 +9582,22 @@ "fill-range": "^7.0.1" } }, + "brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "requires": { + "base64-js": "^1.1.2" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, "browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", @@ -9013,6 +9692,11 @@ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, "clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -9030,8 +9714,16 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "color2k": { "version": "2.0.2", @@ -9078,6 +9770,24 @@ "yaml": "^1.10.0" } }, + "cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "requires": { + "node-fetch": "^2.6.12" + }, + "dependencies": { + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -9089,6 +9799,11 @@ "which": "^2.0.1" } }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, "css-box-model": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", @@ -9215,6 +9930,11 @@ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, + "dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + }, "didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -9765,6 +10485,11 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, "execa": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", @@ -9785,13 +10510,12 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -9895,6 +10619,33 @@ "tslib": "^2.0.3" } }, + "fontkit": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.2.tgz", + "integrity": "sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA==", + "requires": { + "@swc/helpers": "^0.4.2", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + }, + "dependencies": { + "@swc/helpers": { + "version": "0.4.36", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", + "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", + "requires": { + "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", + "tslib": "^2.4.0" + } + } + } + }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -10188,12 +10939,30 @@ "react-is": "^16.7.0" } }, + "hsl-to-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-to-hex/-/hsl-to-hex-1.0.0.tgz", + "integrity": "sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==", + "requires": { + "hsl-to-rgb-for-reals": "^1.1.0" + } + }, + "hsl-to-rgb-for-reals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hsl-to-rgb-for-reals/-/hsl-to-rgb-for-reals-1.1.1.tgz", + "integrity": "sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==" + }, "human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true }, + "hyphen": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.10.4.tgz", + "integrity": "sha512-SejXzIpv9gOVdDWXd4suM1fdF1k2dxZGvuTdkOVLoazYfK7O4DykIQbdrvuyG+EaTNlXAGhMndtKrhykgbt0gg==" + }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -10446,6 +11215,11 @@ "has-tostringtag": "^1.0.0" } }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, "is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -10500,10 +11274,18 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "jay-peg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.0.1.tgz", + "integrity": "sha512-zBfjkGbuuNXk8JW+rEePpPEbRRjupS8q+5yPak7kjy3e2GvvNwsLle9okEFvfGyZA6HvtSSiYrVd1/jgnYebaQ==", + "requires": { + "restructure": "^3.0.0" + } + }, "jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==" + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" }, "js-sdsl": { "version": "4.4.0", @@ -10576,6 +11358,14 @@ "language-subtag-registry": "~0.3.2" } }, + "legacy-swc-helpers": { + "version": "npm:@swc/helpers@0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "requires": { + "tslib": "^2.4.0" + } + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -10641,6 +11431,11 @@ "yallist": "^4.0.0" } }, + "media-engine": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/media-engine/-/media-engine-1.0.3.tgz", + "integrity": "sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==" + }, "memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", @@ -10786,6 +11581,14 @@ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, + "normalize-svg-path": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz", + "integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==", + "requires": { + "svg-arc-to-cubic-bezier": "^3.0.0" + } + }, "npm-run-path": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", @@ -10975,6 +11778,11 @@ "lines-and-columns": "^1.1.6" } }, + "parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -11146,6 +11954,14 @@ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "requires": { + "inherits": "~2.0.3" + } + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -11345,6 +12161,11 @@ "functions-have-names": "^1.2.3" } }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, "resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -11360,6 +12181,11 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, + "restructure": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.1.tgz", + "integrity": "sha512-6neDpI/yE9eogQo22qmWwKIA9wFPRyYjQleDEh6zaNAf2ZPqLJYUvNBJBWEWNoBlCeQMQkvIOe2YI/K2GOag+g==" + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -11452,6 +12278,11 @@ "queue-microtask": "^1.2.2" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -11512,6 +12343,21 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -11542,6 +12388,14 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string.prototype.matchall": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", @@ -11688,6 +12542,11 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==" + }, "synckit": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", @@ -11699,19 +12558,19 @@ } }, "tailwindcss": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", - "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", "requires": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.0", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.18.2", + "jiti": "^1.19.1", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", @@ -11723,7 +12582,6 @@ "postcss-load-config": "^4.0.1", "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", "resolve": "^1.22.2", "sucrase": "^3.32.0" }, @@ -11772,6 +12630,11 @@ "thenify": ">= 3.1.0 < 4" } }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, "tiny-invariant": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", @@ -11801,6 +12664,11 @@ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -11867,6 +12735,31 @@ "which-boxed-primitive": "^1.0.2" } }, + "unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "requires": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + } + } + }, "untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -11920,11 +12813,35 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "vite-compatible-readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/vite-compatible-readable-stream/-/vite-compatible-readable-stream-3.6.1.tgz", + "integrity": "sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "web-streams-polyfill": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -12001,6 +12918,11 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "yoga-layout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-2.0.1.tgz", + "integrity": "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==" + }, "zod": { "version": "3.21.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", diff --git a/view/next-project/package.json b/view/next-project/package.json index a913c6dcc..73cdc222d 100644 --- a/view/next-project/package.json +++ b/view/next-project/package.json @@ -18,6 +18,7 @@ "@emotion/styled": "^11.6.0", "@fontsource/noto-sans-jp": "^4.5.2", "@pdf-lib/fontkit": "^1.1.1", + "@react-pdf/renderer": "^3.4.0", "@types/react-select": "^5.0.1", "clsx": "^1.2.1", "date-fns": "^2.30.0", From a618050d8bf6c8b632b4eaf4e93166739985dc5f Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Wed, 20 Mar 2024 19:22:28 +0900 Subject: [PATCH 041/113] =?UTF-8?q?[feat]=20PDF=E3=83=97=E3=83=AC=E3=83=93?= =?UTF-8?q?=E3=83=A5=E3=83=BC=E3=83=9A=E3=83=BC=E3=82=B8=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/sponsoractivities/pdfChecker.tsx | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 view/next-project/src/pages/sponsoractivities/pdfChecker.tsx diff --git a/view/next-project/src/pages/sponsoractivities/pdfChecker.tsx b/view/next-project/src/pages/sponsoractivities/pdfChecker.tsx new file mode 100644 index 000000000..e17b9f017 --- /dev/null +++ b/view/next-project/src/pages/sponsoractivities/pdfChecker.tsx @@ -0,0 +1,20 @@ +import { NextPage } from 'next'; +import { useEffect, useState } from 'react'; + +const Test: NextPage = () => { + const [isClient, setIsClient] = useState(false); + // eslint-disable-next-line @typescript-eslint/no-var-requires + const App = isClient ? require('../../components/sponsoractivities/createSponsoractivitiesPDF').default : () => null; + + useEffect(() => { + setIsClient(true); + }, []); + + return ( + <> + + + ); +}; + +export default Test; From 1ade862fcbf6c86c6280478d326b2e9f20c929c6 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Wed, 20 Mar 2024 19:23:34 +0900 Subject: [PATCH 042/113] =?UTF-8?q?[feat]=20=E8=AB=8B=E6=B1=82=E6=9B=B8PDF?= =?UTF-8?q?=E3=81=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../createSponsoractivitiesPDF.tsx | 269 ++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx diff --git a/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx b/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx new file mode 100644 index 000000000..17d3e94db --- /dev/null +++ b/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx @@ -0,0 +1,269 @@ +import { Document, Page, Text, Font, View, pdf, StyleSheet } from '@react-pdf/renderer'; +import React from 'react'; +import { SponsorActivityView } from '@type/common'; + +Font.register({ + family: 'NotoSansJP', + src: 'https://fonts.gstatic.com/ea/notosansjapanese/v6/NotoSansJP-Regular.woff2', +}); + +const styles = StyleSheet.create({ + page: { + padding: 30, + fontSize: 11, + fontFamily: 'NotoSansJP', + }, + header: { + fontSize: 24, + textAlign: 'center', + }, + text_S: { + fontSize: 10, + }, + text_M: { + fontSize: 15, + }, + text_L: { + fontSize: 20, + }, + details: { + marginTop: 20, + marginBottom: 20, + }, + detailItem: { + flexDirection: 'row', + justifyContent: 'space-between', + }, + itemsTable: { + display: 'flex', + width: 'auto', + borderStyle: 'solid', + borderWidth: 1, + borderRightWidth: 0, + borderBottomWidth: 0, + }, + tableRow: { + margin: 'auto', + flexDirection: 'row', + }, + commonTableCol: { + borderStyle: 'solid', + borderWidth: 1, + textAlign: 'center', + borderLeftWidth: 0, + borderTopWidth: 0, + padding: 5, + }, + tableColHeader_S: { + width: '10%', + }, + tableColHeader_M: { + width: '20%', + }, + tableColHeader_L: { + width: '40%', + }, + tableCol_S: { + width: '10%', + }, + tableCol_M: { + width: '20%', + }, + tableCol_L: { + width: '40%', + }, + tableCol_Sum: { + borderRight: 0, + }, + textVertical: { + flexDirection: 'column', + }, + textArea: { + width: '85%', + borderStyle: 'solid', + borderWidth: 1, + borderLeftWidth: 0, + borderTopWidth: 0, + minHeight: 50, + justifyContent: 'center', + padding: 7, + }, + textAreaHeader: { + width: '15%', + borderStyle: 'solid', + borderWidth: 1, + borderLeftWidth: 0, + borderTopWidth: 0, + justifyContent: 'center', + alignItems: 'center', + }, + sumField: { + marginLeft: 30, + flexDirection: 'row', + justifyContent: 'center', + width: '250', + fontSize: 20, + borderStyle: 'solid', + borderWidth: 2, + borderTop: 0, + borderRight: 0, + borderLeft: 0, + }, + detailField: { + borderStyle: 'solid', + borderWidth: 1, + padding: 7, + }, + underLine: { + paddingBottom: 3, + borderStyle: 'solid', + borderWidth: 2, + borderTop: 0, + borderRight: 0, + borderLeft: 0, + }, + marginButtom: { + marginBottom: 8, + }, + paddingTop: { + paddingTop: 50, + }, +}); + +export const createSponsoractivitiesPDF = async ( + sponsorActivitiesViewItem: SponsorActivityView, +) => { + const formatDate = (date: string) => { + const datetime = date.replace('T', ' '); + const datetime2 = datetime.substring(0, datetime.length - 10); + return datetime2; + }; + const totalPrice = sponsorActivitiesViewItem.styleDetail.reduce((sum, item) => { + return sum + item.sponsorStyle.price; + }, 0); + + const MyDocument = () => ( + + + + 御 請 求 書 + + + + + + {sponsorActivitiesViewItem.sponsor.name} 御中 + + + ご担当 : {sponsorActivitiesViewItem.sponsor.representative} 様 + + + 件名 : 技大祭企業協賛 + + + + 下記の通り、ご請求申し上げます。 + + + + 合計金額 ¥ {totalPrice} + + + + + + + 請求日 : {formatDate(sponsorActivitiesViewItem.sponsorActivity.createdAt || '')} + + + + 技大祭実行委員 + 〒940-2137 + 新潟県長岡市上富岡町603-1 + 長岡技術科学大学 大学集会施設 + + E-Mail : nutfes_shogai_kyosan@googlegroups.com + 担当 : {sponsorActivitiesViewItem.user.name} + + + + + + + No. + 概要 + 数量 + 単価 + 金額 + + {sponsorActivitiesViewItem.styleDetail.map((styleDetail, index) => ( + + {index + 1} + + {styleDetail.sponsorStyle.style} + + 1 + + ¥ {styleDetail.sponsorStyle.price} + + + ¥ {styleDetail.sponsorStyle.price} + + + ))} + + + + 合計 + + ¥ {totalPrice} + + + + + お手数でございますが、令和5年8月31日(木)までに下記口座へ振込くださいますようお願い申し上げます。 + + <振込先> + 銀行名 : 大光銀行(金融機関コード : 0532) + 支店名 : 希望ヶ丘支店(支店コード : 042) + 預金種別 : 普通預金 + 口座番号 : 2002151 + + + + + + 備考 + + + {sponsorActivitiesViewItem.sponsorActivity.remark} + + + + + + + ); + const asPdf = pdf(); + await asPdf.toBlob(); + asPdf.updateContainer(); + const blob = await asPdf.toBlob(); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = formatDate(sponsorActivitiesViewItem.sponsorActivity.createdAt || '') + '-' + sponsorActivitiesViewItem.sponsor.name + '-請求書.pdf'; + link.click(); +}; + +// export const savePdf = async () => { +// }; + +// const App = () => ( +// +// +// +// ); + +// export default App; From 6eae4ee85dcd1bbc0f0829a68128ebb1c4a45321 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Wed, 20 Mar 2024 19:23:52 +0900 Subject: [PATCH 043/113] =?UTF-8?q?[feat]=20=E8=AB=8B=E6=B1=82=E6=9B=B8?= =?UTF-8?q?=E4=BD=9C=E6=88=90=E3=83=9C=E3=82=BF=E3=83=B3=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/sponsoractivities/DetailModal.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/view/next-project/src/components/sponsoractivities/DetailModal.tsx b/view/next-project/src/components/sponsoractivities/DetailModal.tsx index 1737a9d98..0eeabe25d 100644 --- a/view/next-project/src/components/sponsoractivities/DetailModal.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailModal.tsx @@ -1,7 +1,8 @@ import { clsx } from 'clsx'; import React, { FC } from 'react'; import { RiCloseCircleLine } from 'react-icons/ri'; - +import { createSponsoractivitiesPDF } from './createSponsoractivitiesPDF'; +import PrimaryButton from '@/components/common/OutlinePrimaryButton/OutlinePrimaryButton'; import { Modal } from '@components/common'; import { DESIGNERS } from '@constants/designers'; import { SponsorActivityView } from '@type/common'; @@ -220,6 +221,15 @@ const DetailModal: FC = (props) => { )} +
+ { + createSponsoractivitiesPDF(props.sponsorActivitiesViewItem); + }} + > + 請求書作成 + +
); }; From aa18377e7fb35a11785967cb496e5a72b09fe126 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 19:28:50 +0900 Subject: [PATCH 044/113] =?UTF-8?q?[fix]golangci-lint=E5=AF=BE=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .golangci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.golangci.yml b/.golangci.yml index 9db3a670d..809e65c04 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,2 +1,6 @@ issues: exclude-use-default: false +runner: + gobuild: + ignore: + - "github.com/labstack/echo/v4" From 65ac1ae4863801d1e800ae5b533ecc673f19e868 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 19:30:35 +0900 Subject: [PATCH 045/113] =?UTF-8?q?[fix]golangci-lint=E5=AF=BE=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .golangci.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 809e65c04..c88058e21 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,6 +1,17 @@ issues: exclude-use-default: false -runner: - gobuild: - ignore: - - "github.com/labstack/echo/v4" + +linters: + golint: + # golint settings here + enabled: true + enable-all: true + report-filename: golint.report.txt + +filters: + # Exclude import not used errors + - name: exclude-import-not-used + diff: + ignoreRegexp: '^(---|\+\+\+|[^+- ])' + patterns: + - "imported but not used" From 1247176e24b6e0f09e480c925e17351c6cef5173 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 19:33:15 +0900 Subject: [PATCH 046/113] =?UTF-8?q?[fix]golangci-lint=E5=AF=BE=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/golangci-lint.yml | 3 +++ .golangci.yml | 15 --------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index b21e3f654..d3dfe15bd 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -14,6 +14,9 @@ jobs: uses: actions/setup-go@v2 with: go-version: 1.14 + - name: Go mod tidy + working-directory: app + run: go mod tidy - name: golangci-lint uses: reviewdog/action-golangci-lint@v1 with: diff --git a/.golangci.yml b/.golangci.yml index c88058e21..9db3a670d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,17 +1,2 @@ issues: exclude-use-default: false - -linters: - golint: - # golint settings here - enabled: true - enable-all: true - report-filename: golint.report.txt - -filters: - # Exclude import not used errors - - name: exclude-import-not-used - diff: - ignoreRegexp: '^(---|\+\+\+|[^+- ])' - patterns: - - "imported but not used" From 20a3163eb7d02770c34131a846c99ad5fa893afd Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 19:34:55 +0900 Subject: [PATCH 047/113] =?UTF-8?q?[fix]golangci-lint=E5=AF=BE=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/golangci-lint.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index d3dfe15bd..8ef927a29 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -15,7 +15,6 @@ jobs: with: go-version: 1.14 - name: Go mod tidy - working-directory: app run: go mod tidy - name: golangci-lint uses: reviewdog/action-golangci-lint@v1 From f3f5ccf5521f0c42aa9c66f5ac5dbcef078cc31e Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 19:39:01 +0900 Subject: [PATCH 048/113] =?UTF-8?q?[fix]golangci-lint=E5=AF=BE=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/golangci-lint.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 8ef927a29..b21e3f654 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -14,8 +14,6 @@ jobs: uses: actions/setup-go@v2 with: go-version: 1.14 - - name: Go mod tidy - run: go mod tidy - name: golangci-lint uses: reviewdog/action-golangci-lint@v1 with: From 602af8e1d57ae714a3ed7de1ff60a885b3b0983d Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Wed, 20 Mar 2024 19:42:19 +0900 Subject: [PATCH 049/113] =?UTF-8?q?Revert=20"[feat]=20PDF=E3=83=97?= =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC=E3=83=9A=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a618050d8bf6c8b632b4eaf4e93166739985dc5f. --- .../pages/sponsoractivities/pdfChecker.tsx | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 view/next-project/src/pages/sponsoractivities/pdfChecker.tsx diff --git a/view/next-project/src/pages/sponsoractivities/pdfChecker.tsx b/view/next-project/src/pages/sponsoractivities/pdfChecker.tsx deleted file mode 100644 index e17b9f017..000000000 --- a/view/next-project/src/pages/sponsoractivities/pdfChecker.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { NextPage } from 'next'; -import { useEffect, useState } from 'react'; - -const Test: NextPage = () => { - const [isClient, setIsClient] = useState(false); - // eslint-disable-next-line @typescript-eslint/no-var-requires - const App = isClient ? require('../../components/sponsoractivities/createSponsoractivitiesPDF').default : () => null; - - useEffect(() => { - setIsClient(true); - }, []); - - return ( - <> - - - ); -}; - -export default Test; From 796a3fb8dd87d71d83dc60d7c864ec96f45364b3 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 19:42:50 +0900 Subject: [PATCH 050/113] =?UTF-8?q?[fix]golangci-lint=E5=AF=BE=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/externals/controller/activity_information_controller.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/externals/controller/activity_information_controller.go b/api/externals/controller/activity_information_controller.go index 1c2e8f0b1..11929f1d6 100644 --- a/api/externals/controller/activity_information_controller.go +++ b/api/externals/controller/activity_information_controller.go @@ -7,6 +7,8 @@ import ( "github.com/NUTFes/FinanSu/api/internals/domain" "github.com/NUTFes/FinanSu/api/internals/usecase" + + //lint:ignore "github.com/labstack/echo/v4" ) From c520bb0257dbf5e14a702dea4049ee2d9840c740 Mon Sep 17 00:00:00 2001 From: TkymHrt Date: Wed, 20 Mar 2024 10:43:28 +0000 Subject: [PATCH 051/113] formatted by workflow --- .../sponsoractivities/createSponsoractivitiesPDF.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx b/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx index 17d3e94db..cfa934b81 100644 --- a/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx +++ b/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx @@ -166,7 +166,7 @@ export const createSponsoractivitiesPDF = async ( - 合計金額 ¥ {totalPrice} + 合計金額 ¥ {totalPrice} @@ -253,7 +253,11 @@ export const createSponsoractivitiesPDF = async ( const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; - link.download = formatDate(sponsorActivitiesViewItem.sponsorActivity.createdAt || '') + '-' + sponsorActivitiesViewItem.sponsor.name + '-請求書.pdf'; + link.download = + formatDate(sponsorActivitiesViewItem.sponsorActivity.createdAt || '') + + '-' + + sponsorActivitiesViewItem.sponsor.name + + '-請求書.pdf'; link.click(); }; From 1f7b291eee4442e7ea7c41c671a4e5b2630fb925 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 19:44:56 +0900 Subject: [PATCH 052/113] =?UTF-8?q?[fix]golangci-lint=E5=AF=BE=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/externals/controller/activity_information_controller.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/externals/controller/activity_information_controller.go b/api/externals/controller/activity_information_controller.go index 11929f1d6..92116838e 100644 --- a/api/externals/controller/activity_information_controller.go +++ b/api/externals/controller/activity_information_controller.go @@ -8,8 +8,7 @@ import ( "github.com/NUTFes/FinanSu/api/internals/domain" "github.com/NUTFes/FinanSu/api/internals/usecase" - //lint:ignore - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v4" //nolint:golint,unused ) type activityInformationController struct { From e0cb25891109517dee20a0b93286f97cf84687d8 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 20 Mar 2024 19:53:58 +0900 Subject: [PATCH 053/113] =?UTF-8?q?[fix]ignore=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/externals/controller/activity_information_controller.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/externals/controller/activity_information_controller.go b/api/externals/controller/activity_information_controller.go index 92116838e..bbe1c17ec 100644 --- a/api/externals/controller/activity_information_controller.go +++ b/api/externals/controller/activity_information_controller.go @@ -8,7 +8,7 @@ import ( "github.com/NUTFes/FinanSu/api/internals/domain" "github.com/NUTFes/FinanSu/api/internals/usecase" - "github.com/labstack/echo/v4" //nolint:golint,unused + "github.com/labstack/echo/v4" ) type activityInformationController struct { From 384c2d6c0c591aaccd4845745e4989d053fa5924 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 21 Mar 2024 10:17:34 +0900 Subject: [PATCH 054/113] =?UTF-8?q?[fix]env=E3=82=92gitignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 11a92d878..b088b652a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ web/**/*.json web/**/cert.pem tmp/* + +/view/next-project/.env From 3d5fc4b89cf4185498100e4ff52647f49752bdb5 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 21 Mar 2024 10:29:08 +0900 Subject: [PATCH 055/113] =?UTF-8?q?[fix]selected=E2=86=92value=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/sponsoractivities/EditModal.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/EditModal.tsx b/view/next-project/src/components/sponsoractivities/EditModal.tsx index 5fb8ef2f6..4b7f30639 100644 --- a/view/next-project/src/components/sponsoractivities/EditModal.tsx +++ b/view/next-project/src/components/sponsoractivities/EditModal.tsx @@ -192,9 +192,9 @@ export default function EditModal(props: ModalProps) {

企業名

- {sponsors.map((sponsor) => ( - ))} @@ -226,9 +226,9 @@ export default function EditModal(props: ModalProps) {

担当者名

- {filteredUsers.map((user) => ( - ))} From ccd8f94e86601cf9f78a434f613a1b0cd6538376 Mon Sep 17 00:00:00 2001 From: KazumaSun Date: Thu, 21 Mar 2024 04:04:35 +0000 Subject: [PATCH 056/113] =?UTF-8?q?[fix]=E3=83=AC=E3=83=93=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/sponsoractivities/OpenPaymentDayModalButton.tsx | 2 -- .../src/components/sponsoractivities/PaymentDayModal.tsx | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/OpenPaymentDayModalButton.tsx b/view/next-project/src/components/sponsoractivities/OpenPaymentDayModalButton.tsx index 3a1cf13df..62864ba43 100644 --- a/view/next-project/src/components/sponsoractivities/OpenPaymentDayModalButton.tsx +++ b/view/next-project/src/components/sponsoractivities/OpenPaymentDayModalButton.tsx @@ -9,14 +9,12 @@ interface Props { children?: React.ReactNode; sponsorActivitiesViewItem: SponsorActivityView; setIsOpen: (isOpen: boolean) => void; - isDisabled?: boolean; } const OpenPaymentDayModalButton: React.FC = (props) => { const [isPaymentDayModalOpen, setIsPaymentDayModalOpen] = useState(false); const onOpen = () => { setIsPaymentDayModalOpen(true); - // props.setIsOpen(false) }; return ( diff --git a/view/next-project/src/components/sponsoractivities/PaymentDayModal.tsx b/view/next-project/src/components/sponsoractivities/PaymentDayModal.tsx index 011762952..2eb0ce5b6 100644 --- a/view/next-project/src/components/sponsoractivities/PaymentDayModal.tsx +++ b/view/next-project/src/components/sponsoractivities/PaymentDayModal.tsx @@ -45,7 +45,7 @@ export default function PaymentDayModal(props: ModalProps) { }} />
-

入金日の入力

+

入金日を入力

Date: Thu, 21 Mar 2024 04:09:55 +0000 Subject: [PATCH 057/113] formatted by workflow --- .../components/sponsoractivities/PaymentDayModal.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/PaymentDayModal.tsx b/view/next-project/src/components/sponsoractivities/PaymentDayModal.tsx index 2b8136dff..31ea9bfc7 100644 --- a/view/next-project/src/components/sponsoractivities/PaymentDayModal.tsx +++ b/view/next-project/src/components/sponsoractivities/PaymentDayModal.tsx @@ -32,9 +32,9 @@ export default function PaymentDayModal(props: ModalProps) { const handler = (input: string) => - (e: React.ChangeEvent | React.ChangeEvent) => { - setFormData({ ...formData, [input]: e.target.value }); - }; + (e: React.ChangeEvent | React.ChangeEvent) => { + setFormData({ ...formData, [input]: e.target.value }); + }; return ( @@ -46,7 +46,9 @@ export default function PaymentDayModal(props: ModalProps) { }} />
-

入金日を入力

+

+ 入金日を入力 +

Date: Thu, 21 Mar 2024 16:40:56 +0900 Subject: [PATCH 058/113] =?UTF-8?q?[fix]=20=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=81=A8=E8=A1=A8=E7=A4=BA=E3=81=AE=E4=BB=95?= =?UTF-8?q?=E7=B5=84=E3=81=BF=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/fund_information/EditModal.tsx | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/view/next-project/src/components/fund_information/EditModal.tsx b/view/next-project/src/components/fund_information/EditModal.tsx index a583e51a8..be5f8ea42 100644 --- a/view/next-project/src/components/fund_information/EditModal.tsx +++ b/view/next-project/src/components/fund_information/EditModal.tsx @@ -29,30 +29,25 @@ export default function EditModal(props: ModalProps) { receivedAt: props.fundInformation.receivedAt, }); - const [departmentID, setDepartmentID] = useState(1); - const [defaultValue, setDefaultValue] = useState(false); + const defaultTeacher = props.teachers.find( + (teacher) => teacher.id === props.fundInformation.teacherID, + ); + const [teacher, setTeacher] = useState(defaultTeacher); + const [departmentID, setDepartmentID] = useState(defaultTeacher?.departmentID || 1); useEffect(() => { - if (defaultValue == false) { - const selectedTeacher = props.teachers.find( - (teacher) => teacher.id === props.fundInformation.teacherID, - ); - if (selectedTeacher?.id) { - setDepartmentID(selectedTeacher.departmentID); - setFormData({ ...formData, teacherID: selectedTeacher.id }); - } - setTimeout(() => { - setDefaultValue(true); - }); - } else { + if (teacher?.departmentID !== departmentID) { const relatedTeachers = props.teachers.filter( (teacher) => teacher.departmentID === departmentID, ); - if (relatedTeachers) { - setFormData({ ...formData, teacherID: relatedTeachers[0].id || 0 }); - } + relatedTeachers && + setFormData({ + ...formData, + teacherID: relatedTeachers[0]?.id || 0, + }); + setTeacher(relatedTeachers[0]); } - }, [departmentID, props.teachers]); + }, [departmentID]); const handler = (input: string) => From 369473733b0a2bf9b18e01c8c36934c739cd35bf Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 21 Mar 2024 17:31:06 +0900 Subject: [PATCH 059/113] =?UTF-8?q?[fix]=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/next-project/.env | 4 ++-- .../public/images/docker-copose.png | Bin 220783 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 view/next-project/public/images/docker-copose.png diff --git a/view/next-project/.env b/view/next-project/.env index 0a04f069f..a4bf98705 100644 --- a/view/next-project/.env +++ b/view/next-project/.env @@ -1,5 +1,5 @@ NEXT_PUBLIC_ENDPOINT='192.168.176.1' NEXT_PUBLIC_PORT=9000 -NEXT_PUBLIC_ACCESS_KEY='bE5KYqihEcEXMrgkVhZn' -NEXT_PUBLIC_SECRET_KEY='oQvamjXnAvrsyneZdluX7S49TfRi0na6AO8WNPuL' +NEXT_PUBLIC_ACCESS_KEY='ZSFAih3Aq3bVTDtXCVHN' +NEXT_PUBLIC_SECRET_KEY='PkmQKi4uuD8MFnG0Vqb2jf6gEUXlzF1MttyQhKCC' NEXT_PUBLIC_BUCKET_NAME='finansu' diff --git a/view/next-project/public/images/docker-copose.png b/view/next-project/public/images/docker-copose.png deleted file mode 100644 index 8d9381f7c7fcc523dc6ac00b16a2543e0f1933ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220783 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

^HKnA#V*g)zdIup36ho1D4xC*m__UHWb_ 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 Date: Thu, 21 Mar 2024 19:03:50 +0900 Subject: [PATCH 060/113] =?UTF-8?q?[fix]=20=E9=85=8D=E7=BD=AE=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=83=AC=E3=82=AF=E3=83=88=E3=83=AA=E3=81=AE=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../createSponsoractivitiesReceiptPDF.tsx} | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) rename view/next-project/src/{components/sponsoractivities/createSponsoractivitiesPDF.tsx => utils/createSponsoractivitiesReceiptPDF.tsx} (91%) diff --git a/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx similarity index 91% rename from view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx rename to view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx index cfa934b81..c249ae5c6 100644 --- a/view/next-project/src/components/sponsoractivities/createSponsoractivitiesPDF.tsx +++ b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx @@ -132,6 +132,8 @@ const styles = StyleSheet.create({ export const createSponsoractivitiesPDF = async ( sponsorActivitiesViewItem: SponsorActivityView, + date: string, + remarks: string, ) => { const formatDate = (date: string) => { const datetime = date.replace('T', ' '); @@ -179,7 +181,7 @@ export const createSponsoractivitiesPDF = async ( 技大祭実行委員 〒940-2137 - 新潟県長岡市上富岡町603-1 + 新潟県長岡市上富岡町1603-1 長岡技術科学大学 大学集会施設 E-Mail : nutfes_shogai_kyosan@googlegroups.com @@ -200,7 +202,7 @@ export const createSponsoractivitiesPDF = async ( {index + 1} - {styleDetail.sponsorStyle.style} + {styleDetail.sponsorStyle.style} ({styleDetail.sponsorStyle.feature}) 1 @@ -223,11 +225,11 @@ export const createSponsoractivitiesPDF = async ( - お手数でございますが、令和5年8月31日(木)までに下記口座へ振込くださいますようお願い申し上げます。 + お手数でございますが、{date}までに下記口座へ振込くださいますようお願い申し上げます。 <振込先> - 銀行名 : 大光銀行(金融機関コード : 0532) - 支店名 : 希望ヶ丘支店(支店コード : 042) + 銀 行 名 : 大光銀行(金融機関コード : 0532) + 支 店 名 : 希望ヶ丘支店(支店コード : 042) 預金種別 : 普通預金 口座番号 : 2002151 @@ -238,7 +240,7 @@ export const createSponsoractivitiesPDF = async ( 備考 - {sponsorActivitiesViewItem.sponsorActivity.remark} + {remarks} @@ -260,14 +262,3 @@ export const createSponsoractivitiesPDF = async ( '-請求書.pdf'; link.click(); }; - -// export const savePdf = async () => { -// }; - -// const App = () => ( -// -// -// -// ); - -// export default App; From df959026309f805fedd1a7c6dca250b2f726d309 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 21 Mar 2024 19:04:24 +0900 Subject: [PATCH 061/113] =?UTF-8?q?[feat]=20=E8=AB=8B=E6=B1=82=E6=97=A5?= =?UTF-8?q?=E3=81=A8=E5=82=99=E8=80=83=E3=81=AE=E5=85=A5=E5=8A=9B=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sponsoractivities/AddPdfDetailModal.tsx | 98 +++++++++++++++++++ .../sponsoractivities/DetailModal.tsx | 14 +-- .../OpenAddPdfDetailModalButton.tsx | 32 ++++++ 3 files changed, 135 insertions(+), 9 deletions(-) create mode 100644 view/next-project/src/components/sponsoractivities/AddPdfDetailModal.tsx create mode 100644 view/next-project/src/components/sponsoractivities/OpenAddPdfDetailModalButton.tsx diff --git a/view/next-project/src/components/sponsoractivities/AddPdfDetailModal.tsx b/view/next-project/src/components/sponsoractivities/AddPdfDetailModal.tsx new file mode 100644 index 000000000..b610be01d --- /dev/null +++ b/view/next-project/src/components/sponsoractivities/AddPdfDetailModal.tsx @@ -0,0 +1,98 @@ +import React, { useState } from 'react'; + +import { createSponsoractivitiesPDF } from '@/utils/createSponsoractivitiesReceiptPDF'; +import { CloseButton, Input, Modal, PrimaryButton } from '@components/common'; +import { SponsorActivityView } from '@type/common'; + +interface ModalProps { + setIsOpen: (isOpen: boolean) => void; + sponsorActivitiesViewItem: SponsorActivityView; + children?: React.ReactNode; +} + +interface FormDateFormat { + receivedAt: string; +} + +export default function AddPdfDetailModal(props: ModalProps) { + const today = new Date(); + const yyyy = String(today.getFullYear()); + const mm = String(today.getMonth() + 1).padStart(2, '0'); + const dd = String(today.getDate()).padStart(2, '0'); + const weekdays = ['日', '月', '火', '水', '木', '金', '土']; + const toReiwaYear = (year: number) => { + const reiwaStartYear = 2019; + const reiwaYear = year - reiwaStartYear + 1; + return reiwaYear === 1 ? '元' : `${reiwaYear}`; + }; + const getWeekday = (date: Date) => { + return weekdays[date.getDay()]; + }; + const ymd = `${yyyy}-${mm}-${dd}`; + + const formatDate = (date: string) => { + const [year, month, day] = date.split('-').map(Number); + const dateObj = new Date(year, month - 1, day); + const reiwaYear = toReiwaYear(year); + const weekday = getWeekday(dateObj); + return `令和${reiwaYear}年${month}月${day}日(${weekday})`; + }; + + const [formData, setFormData] = useState({ receivedAt: ymd }); + const [remarks, setRemarks] = useState(''); + + const handler = + (input: string) => + (e: React.ChangeEvent | React.ChangeEvent) => { + setFormData({ ...formData, [input]: e.target.value }); + }; + + const handleRemarksChange = (e: React.ChangeEvent) => { + setRemarks(e.target.value); + }; + + return ( + +

+ + ); +} diff --git a/view/next-project/src/components/sponsoractivities/DetailModal.tsx b/view/next-project/src/components/sponsoractivities/DetailModal.tsx index 0eeabe25d..6f2c3a487 100644 --- a/view/next-project/src/components/sponsoractivities/DetailModal.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailModal.tsx @@ -1,8 +1,7 @@ import { clsx } from 'clsx'; import React, { FC } from 'react'; import { RiCloseCircleLine } from 'react-icons/ri'; -import { createSponsoractivitiesPDF } from './createSponsoractivitiesPDF'; -import PrimaryButton from '@/components/common/OutlinePrimaryButton/OutlinePrimaryButton'; +import OpenAddPdfDetailModalButton from './OpenAddPdfDetailModalButton'; import { Modal } from '@components/common'; import { DESIGNERS } from '@constants/designers'; import { SponsorActivityView } from '@type/common'; @@ -222,13 +221,10 @@ const DetailModal: FC = (props) => {
- { - createSponsoractivitiesPDF(props.sponsorActivitiesViewItem); - }} - > - 請求書作成 - +
); diff --git a/view/next-project/src/components/sponsoractivities/OpenAddPdfDetailModalButton.tsx b/view/next-project/src/components/sponsoractivities/OpenAddPdfDetailModalButton.tsx new file mode 100644 index 000000000..0a481c950 --- /dev/null +++ b/view/next-project/src/components/sponsoractivities/OpenAddPdfDetailModalButton.tsx @@ -0,0 +1,32 @@ +import * as React from 'react'; +import { useState } from 'react'; +import { PrimaryButton } from '../common'; +import AddPdfDetailModal from './AddPdfDetailModal'; +import { SponsorActivityView } from '@/type/common'; + +interface Props { + children?: React.ReactNode; + sponsorActivitiesViewItem: SponsorActivityView; + setIsOpen: (isOpen: boolean) => void; +} + +const OpenAddPdfDetailModalButton: React.FC = (props) => { + const [isAddPdfDetailModalOpen, setIsAddPdfDetailModalOpen] = useState(false); + const onOpen = () => { + setIsAddPdfDetailModalOpen(true); + }; + + return ( + <> + 請求書作成 + {isAddPdfDetailModalOpen && ( + + )} + + ); +}; + +export default OpenAddPdfDetailModalButton; From f806ff616a6e6e2b478b9ac39c5d03719e79654b Mon Sep 17 00:00:00 2001 From: TkymHrt Date: Thu, 21 Mar 2024 10:05:32 +0000 Subject: [PATCH 062/113] formatted by workflow --- .../src/utils/createSponsoractivitiesReceiptPDF.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx index c249ae5c6..85b316a64 100644 --- a/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx +++ b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx @@ -228,8 +228,8 @@ export const createSponsoractivitiesPDF = async ( お手数でございますが、{date}までに下記口座へ振込くださいますようお願い申し上げます。 <振込先> - 銀 行 名 : 大光銀行(金融機関コード : 0532) - 支 店 名 : 希望ヶ丘支店(支店コード : 042) + 銀 行 名 : 大光銀行(金融機関コード : 0532) + 支 店 名 : 希望ヶ丘支店(支店コード : 042) 預金種別 : 普通預金 口座番号 : 2002151 From 2750a86b578d1ac7c20e427844d7bd2bc2a92039 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Thu, 21 Mar 2024 21:32:52 +0000 Subject: [PATCH 063/113] =?UTF-8?q?[fix]=20=E4=BC=81=E6=A5=AD=E5=90=8D?= =?UTF-8?q?=E7=A2=BA=E8=AA=8D=E3=81=AE=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=83=9C=E3=83=83=E3=82=AF=E3=82=B9=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/sponsors/SponsorEditModal.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/view/next-project/src/components/sponsors/SponsorEditModal.tsx b/view/next-project/src/components/sponsors/SponsorEditModal.tsx index 04c8fc78f..aa424d36f 100644 --- a/view/next-project/src/components/sponsors/SponsorEditModal.tsx +++ b/view/next-project/src/components/sponsors/SponsorEditModal.tsx @@ -3,7 +3,7 @@ import { useRouter } from 'next/router'; import React, { useState } from 'react'; import { put } from '@api/sponsor'; -import { PrimaryButton, CloseButton, Input, Modal } from '@components/common'; +import { PrimaryButton, CloseButton, Input, Modal, Checkbox } from '@components/common'; import { Sponsor } from '@type/common'; interface Props { @@ -33,6 +33,8 @@ export default function SponsorEditModal(props: Props) { router.reload(); }; + const [isChecked, setIsChecked] = useState(true); + return (
@@ -67,12 +69,21 @@ export default function SponsorEditModal(props: Props) { />
+
+
+ setIsChecked(!isChecked)} /> +
+

+ 企業名が正確である。※株式会社などがついている正しいものか +

+
{ submit(formData); }} + disabled={!isChecked} > 編集する From b2d45c33098e3d386102d08ba0b3f5c7f2b801da Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Fri, 22 Mar 2024 16:23:44 +0900 Subject: [PATCH 064/113] =?UTF-8?q?[fix]=E3=83=9C=E3=82=BF=E3=83=B3?= =?UTF-8?q?=E3=81=AE=E3=83=87=E3=82=B6=E3=82=A4=E3=83=B3=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sponsoractivities/DetailPage2.tsx | 100 +++++++++--------- 1 file changed, 49 insertions(+), 51 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx index c821069bb..72ec940a2 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx @@ -161,7 +161,7 @@ const DetailPage2: FC = (props) => {
-
+

広告の状況

@@ -169,58 +169,56 @@ const DetailPage2: FC = (props) => {

-
- {activityInformation?.fileType === 'application/pdf' && - activityInformation?.fileName && ( - - )} - {activityInformation.fileType !== 'application/pdf' && - activityInformation.fileName && ( - Picture of the author - )} -
- {activityInformation.fileName !== '' && ( -
- { - setEditActivityInformationId(index); - setIsOpen(true); - }} - > - 変更 - - - fileURLs && download(fileURLs[index], activityInformation.fileName || '') - } - > - ダウンロード - -
+
+
+
+ {activityInformation?.fileType === 'application/pdf' && + activityInformation?.fileName && ( + )} - {activityInformation.fileName === '' && ( -
- { - setEditActivityInformationId(index); - setIsOpen(true); - }} - > - 広告登録 - -
+ {activityInformation.fileType !== 'application/pdf' && + activityInformation.fileName && ( + Picture of the author )} -
+
+
+ {activityInformation.fileName !== '' && ( +
+ { + setEditActivityInformationId(index); + setIsOpen(true); + }} + > + 変更 + + + fileURLs && download(fileURLs[index], activityInformation.fileName || '') + } + > + ダウンロード + +
+ )} + {activityInformation.fileName === '' && ( +
+ { + setEditActivityInformationId(index); + setIsOpen(true); + }} + > + 広告登録 + +
+ )}
))} From 99f9ad31e24758ec056334dc698b7473bebf7416 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Fri, 22 Mar 2024 16:27:00 +0900 Subject: [PATCH 065/113] =?UTF-8?q?[fix]=E3=82=BF=E3=82=A4=E3=83=9D?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/externals/repository/activity_repository.go | 4 ++-- api/internals/usecase/activity_usecase.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/externals/repository/activity_repository.go b/api/externals/repository/activity_repository.go index 33ddad1fc..304208bc8 100644 --- a/api/externals/repository/activity_repository.go +++ b/api/externals/repository/activity_repository.go @@ -23,7 +23,7 @@ type ActivityRepository interface { FindLatestRecord(c context.Context) (*sql.Row, error) FindSponsorStyle(context.Context, string) (*sql.Rows, error) AllDetailsByPeriod(context.Context, string) (*sql.Rows, error) - FindAcitivityInformation(context.Context, string) (*sql.Rows, error) + FindActivityInformation(context.Context, string) (*sql.Rows, error) } func NewActivityRepository(c db.Client, ac abstract.Crud) ActivityRepository { @@ -147,7 +147,7 @@ func (ar *activityRepository) FindSponsorStyle(c context.Context, sponsorStyleID } // 指定したactivity_idのactivityを取得する -func (ar *activityRepository) FindAcitivityInformation(c context.Context, activityID string) (*sql.Rows, error) { +func (ar *activityRepository) FindActivityInformation(c context.Context, activityID string) (*sql.Rows, error) { query := "SELECT * FROM activity_informations WHERE activity_id =" + activityID return ar.crud.Read(c, query) } diff --git a/api/internals/usecase/activity_usecase.go b/api/internals/usecase/activity_usecase.go index c3a7c60a1..e656ae71e 100644 --- a/api/internals/usecase/activity_usecase.go +++ b/api/internals/usecase/activity_usecase.go @@ -208,7 +208,7 @@ func (a *activityUseCase) GetActivityDetail(c context.Context) ([]domain.Activit return nil, errors.Wrapf(err, "cannot connect SQL") } - rows, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID))) + rows, err := a.rep.FindActivityInformation(c, strconv.Itoa(int(activity.Activity.ID))) for rows.Next(){ err := rows.Scan( &activityInformation.ID, @@ -303,7 +303,7 @@ func (a *activityUseCase) GetActivityDetailsByPeriod(c context.Context, year str return nil, errors.Wrapf(err, "cannot connect SQL") } - rows, err := a.rep.FindAcitivityInformation(c, strconv.Itoa(int(activity.Activity.ID))) + rows, err := a.rep.FindActivityInformation(c, strconv.Itoa(int(activity.Activity.ID))) for rows.Next(){ err := rows.Scan( &activityInformation.ID, From 4fc8b38cc665cac276138af0edd3a13971e60218 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Fri, 22 Mar 2024 16:30:03 +0900 Subject: [PATCH 066/113] =?UTF-8?q?[fix]env=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=81=AE=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/next-project/.env | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 view/next-project/.env diff --git a/view/next-project/.env b/view/next-project/.env deleted file mode 100644 index a4bf98705..000000000 --- a/view/next-project/.env +++ /dev/null @@ -1,5 +0,0 @@ -NEXT_PUBLIC_ENDPOINT='192.168.176.1' -NEXT_PUBLIC_PORT=9000 -NEXT_PUBLIC_ACCESS_KEY='ZSFAih3Aq3bVTDtXCVHN' -NEXT_PUBLIC_SECRET_KEY='PkmQKi4uuD8MFnG0Vqb2jf6gEUXlzF1MttyQhKCC' -NEXT_PUBLIC_BUCKET_NAME='finansu' From 38af866882f6300d507248cd52e65f76140d82a3 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Fri, 22 Mar 2024 17:30:06 +0900 Subject: [PATCH 067/113] =?UTF-8?q?[feat]=E3=83=AD=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=83=A6=E3=83=BC=E3=82=B6=E3=83=BC=E3=82=92=E5=88=9D?= =?UTF-8?q?=E6=9C=9F=E5=80=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +- .../components/fund_information/AddModal.tsx | 55 ++++++++++++------- .../fund_information/OpenAddModalButton.tsx | 2 + .../src/pages/fund_informations/index.tsx | 7 ++- 4 files changed, 46 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index a4f08efae..4baf6f7a0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,7 @@ api/tmp # cloudflare web/**/*.json -web/**/cert.pem \ No newline at end of file +web/**/cert.pem + +tmp +.env diff --git a/view/next-project/src/components/fund_information/AddModal.tsx b/view/next-project/src/components/fund_information/AddModal.tsx index 16bac2a3c..8a273af99 100644 --- a/view/next-project/src/components/fund_information/AddModal.tsx +++ b/view/next-project/src/components/fund_information/AddModal.tsx @@ -1,5 +1,5 @@ import { useRouter } from 'next/router'; -import React, { Dispatch, FC, SetStateAction, useState, useMemo } from 'react'; +import React, { Dispatch, FC, SetStateAction, useState, useMemo, useEffect, use } from 'react'; import { useRecoilState } from 'recoil'; import { Modal, CloseButton, Input, Select, PrimaryButton } from '../common'; @@ -14,6 +14,7 @@ interface ModalProps { teachers: Teacher[]; departments: Department[]; users: User[]; + currentUser?: User; } const OpenAddModal: FC = (props) => { @@ -28,9 +29,12 @@ const OpenAddModal: FC = (props) => { const dd = String(today.getDate()).padStart(2, '0'); const ymd = `${yyyy}-${mm}-${dd}`; + const [formUser, setFormUser] = useState(props.currentUser); + const loginUserBureau = BUREAUS.find((bureau) => bureau.id === props.currentUser?.bureauID); + const [formData, setFormData] = useState({ - userID: user.id, - teacherID: props.teachers[0].id || 1, + userID: formUser?.id || 0, + teacherID: loginUserBureau?.id || 1, price: 0, remark: '', isFirstCheck: false, @@ -39,21 +43,29 @@ const OpenAddModal: FC = (props) => { }); // 担当者を局でフィルタを適用 - const [bureauId, setBureauId] = useState(1); - const filteredUsers = useMemo(() => { - const res = props.users - .filter((user) => { - return user.bureauID === bureauId; - }) - .filter((user, index, self) => { - return self.findIndex((u) => u.name === user.name) === index; - }); - if (res.length !== 0) setFormData({ ...formData, userID: res[0].id }); - return res; - }, [bureauId]); + const [bureauId, setBureauId] = useState(loginUserBureau?.id || 1); + const defaultfilteredUsers = props.users + .filter((user) => { + return user.bureauID === bureauId; + }) + .filter((user, index, self) => { + return self.findIndex((u) => u.name === user.name) === index; + }); + const [filteredUsers, setFilteredUsers] = useState(defaultfilteredUsers); - const loginUser = user.id; - const loginUserDepartment = BUREAUS.find((u) => user.bureauID === u.id)?.name; + useEffect(() => { + if (formUser?.bureauID !== bureauId) { + const filteredUsers = props.users + .filter((user) => { + return user.bureauID === bureauId; + }) + .filter((user, index, self) => { + return self.findIndex((u) => u.name === user.name) === index; + }); + setFilteredUsers(filteredUsers); + if (filteredUsers.length !== 0) setFormData({ ...formData, userID: filteredUsers[0].id }); + } + }, [bureauId]); const handler = (input: string) => @@ -107,8 +119,10 @@ const OpenAddModal: FC = (props) => {

担当者の局

- setBureauId(Number(e.target.value))} + > {BUREAUS.map((bureaus) => (

担当者

- {filteredUsers.map((user) => (
- + 学内募金登録
From 3285355f2b8348ab7c89ca3c2e390d89171263ed Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Fri, 22 Mar 2024 08:31:15 +0000 Subject: [PATCH 068/113] formatted by workflow --- view/next-project/src/components/fund_information/AddModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/next-project/src/components/fund_information/AddModal.tsx b/view/next-project/src/components/fund_information/AddModal.tsx index 8a273af99..0759bea3c 100644 --- a/view/next-project/src/components/fund_information/AddModal.tsx +++ b/view/next-project/src/components/fund_information/AddModal.tsx @@ -1,5 +1,5 @@ import { useRouter } from 'next/router'; -import React, { Dispatch, FC, SetStateAction, useState, useMemo, useEffect, use } from 'react'; +import React, { Dispatch, FC, SetStateAction, useState, useEffect } from 'react'; import { useRecoilState } from 'recoil'; import { Modal, CloseButton, Input, Select, PrimaryButton } from '../common'; From 1b992a6f9e46327045691d9dad89f026d2fcfc97 Mon Sep 17 00:00:00 2001 From: KazumaSun Date: Fri, 22 Mar 2024 12:10:24 +0000 Subject: [PATCH 069/113] =?UTF-8?q?[fix]=E8=B3=BC=E5=85=A5=E5=A0=B1?= =?UTF-8?q?=E5=91=8A=E3=81=AE=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC=E7=AE=87?= =?UTF-8?q?=E6=89=80=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/utils/createPurchaseReportPdf.ts | 79 ++++++++----------- 1 file changed, 35 insertions(+), 44 deletions(-) diff --git a/view/next-project/src/utils/createPurchaseReportPdf.ts b/view/next-project/src/utils/createPurchaseReportPdf.ts index e8a68e7f3..2b21efe72 100644 --- a/view/next-project/src/utils/createPurchaseReportPdf.ts +++ b/view/next-project/src/utils/createPurchaseReportPdf.ts @@ -48,49 +48,49 @@ export const createPurchaseReportFormPdf = async ( size: fontSizes[0], font: fontData, }); - page.drawText('No.', { + page.drawText('□', { x: 160, y: height - 35, size: fontSizes[0], font: fontData, }); - page.drawText('発行日', { + page.drawText('領収書受け取り', { x: 25, y: height - 50, size: fontSizes[0], font: fontData, }); - page.drawText('御中', { + page.drawText('□', { x: 160, y: height - 50, size: fontSizes[0], font: fontData, }); - page.drawText('下記、正に領収いたしました。', { + page.drawText('レシート受け取り', { x: 25, y: height - 65, size: fontSizes[0], font: fontData, }); - page.drawText('金額', { + page.drawText('□', { x: 160, y: height - 65, size: fontSizes[0], font: fontData, }); - page.drawText('但', { + page.drawText('おつり', { x: 25, y: height - 80, size: fontSizes[0], font: fontData, }); - page.drawText('技大祭への広告協賛として', { + page.drawText('¥', { x: 115, y: height - 80, size: fontSizes[0], font: fontData, }); - page.drawText('入金日', { + page.drawText('提出者', { x: 25, y: height - 95, size: fontSizes[0], @@ -102,42 +102,33 @@ export const createPurchaseReportFormPdf = async ( size: fontSizes[0], font: fontData, }); - page.drawText('内', { - x: 150, - y: height - 95, - size: fontSizes[0], - font: fontData, - }); - page.drawText('長岡技術科学大学 技大祭実行員会', { - x: 150, - y: height - 95, - size: fontSizes[0], - font: fontData, - }); - page.drawText('〒940-2188', { - x: 150, - y: height - 95, - size: fontSizes[0], - font: fontData, - }); - page.drawText('新潟県長岡市上富岡町1603-1', { - x: 150, - y: height - 95, - size: fontSizes[0], - font: fontData, - }); - page.drawText('大学集会施設1号館技大祭実行委員会', { - x: 150, - y: height - 95, - size: fontSizes[0], - font: fontData, - }); - page.drawText('E-mail:nutfes_shogai_kyosan@googlegroups.com', { + page.drawText('(担当:' + purchaseReportViews.reportUser.name + ')', { x: 150, y: height - 95, size: fontSizes[0], font: fontData, }); + for (let i = 3; i < 5; i++) { + page.drawText(':', { + x: 75, + y: height - (35 + i * 15), + size: fontSizes[0], + font: fontData, + }); + if (i !== 4) { + page.drawLine({ + start: { x: 90, y: height - (38 + i * 15) }, + end: { x: 200, y: height - (38 + i * 15) }, + opacity: 0.75, + }); + } else { + page.drawLine({ + start: { x: 90, y: height - (38 + i * 15) }, + end: { x: 270, y: height - (38 + i * 15) }, + opacity: 0.75, + }); + } + } page.drawText('報告書', { x: width / 2 - 33, @@ -558,8 +549,8 @@ export const createPurchaseReportFormPdf = async ( page.drawText( String( sum + - purchaseReportViews.purchaseReport.addition - - purchaseReportViews.purchaseReport.discount, + purchaseReportViews.purchaseReport.addition - + purchaseReportViews.purchaseReport.discount, ), { x: @@ -568,10 +559,10 @@ export const createPurchaseReportFormPdf = async ( 3 * rectangleWidth2 - String( sum + - purchaseReportViews.purchaseReport.addition - - purchaseReportViews.purchaseReport.discount, + purchaseReportViews.purchaseReport.addition - + purchaseReportViews.purchaseReport.discount, ).length * - 7, + 7, y: height - (tableTextHight + 20 * (4 + index)), size: fontSizes[0], font: fontData, From 1dcdaadb80bd59b51f45226d4540aa9039e4dfd5 Mon Sep 17 00:00:00 2001 From: KazumaSun Date: Fri, 22 Mar 2024 12:11:43 +0000 Subject: [PATCH 070/113] formatted by workflow --- view/next-project/src/utils/createPurchaseReportPdf.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/view/next-project/src/utils/createPurchaseReportPdf.ts b/view/next-project/src/utils/createPurchaseReportPdf.ts index 2b21efe72..9a47c61f3 100644 --- a/view/next-project/src/utils/createPurchaseReportPdf.ts +++ b/view/next-project/src/utils/createPurchaseReportPdf.ts @@ -549,8 +549,8 @@ export const createPurchaseReportFormPdf = async ( page.drawText( String( sum + - purchaseReportViews.purchaseReport.addition - - purchaseReportViews.purchaseReport.discount, + purchaseReportViews.purchaseReport.addition - + purchaseReportViews.purchaseReport.discount, ), { x: @@ -559,10 +559,10 @@ export const createPurchaseReportFormPdf = async ( 3 * rectangleWidth2 - String( sum + - purchaseReportViews.purchaseReport.addition - - purchaseReportViews.purchaseReport.discount, + purchaseReportViews.purchaseReport.addition - + purchaseReportViews.purchaseReport.discount, ).length * - 7, + 7, y: height - (tableTextHight + 20 * (4 + index)), size: fontSizes[0], font: fontData, From ca3a219287189712f6d788ea682309a1ce27a6aa Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Wed, 27 Mar 2024 18:12:52 +0900 Subject: [PATCH 071/113] =?UTF-8?q?[fix]=E6=9C=AC=E7=95=AA=E7=92=B0?= =?UTF-8?q?=E5=A2=83=E3=81=AE=E3=83=90=E3=82=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +++- .../src/components/budgets/DetailModal.tsx | 29 ++++++++++++------- view/next-project/src/pages/budgets/index.tsx | 2 +- .../src/pages/purchasereports/index.tsx | 2 +- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index a4f08efae..4baf6f7a0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,7 @@ api/tmp # cloudflare web/**/*.json -web/**/cert.pem \ No newline at end of file +web/**/cert.pem + +tmp +.env diff --git a/view/next-project/src/components/budgets/DetailModal.tsx b/view/next-project/src/components/budgets/DetailModal.tsx index 0ce488bfb..df372cef4 100644 --- a/view/next-project/src/components/budgets/DetailModal.tsx +++ b/view/next-project/src/components/budgets/DetailModal.tsx @@ -5,7 +5,7 @@ import { ExpenseView } from '@type/common'; interface ModalProps { setIsOpen: (isOpen: boolean) => void; - expenseView: ExpenseView; + expenseView: ExpenseView | null; } const DetailModal: FC = (props) => { @@ -13,21 +13,28 @@ const DetailModal: FC = (props) => { props.setIsOpen(false); }; + const expenseView = props.expenseView; + + if (!expenseView) { + onClose(); + return <>; + } + const discountTotal = useMemo(() => { - return props.expenseView.purchaseDetails - ? props.expenseView.purchaseDetails.reduce((acc, cur) => { + return expenseView && expenseView.purchaseDetails + ? expenseView.purchaseDetails.reduce((acc, cur) => { return acc + cur.purchaseReport.discount; }, 0) : 0; - }, [props.expenseView.purchaseDetails]); + }, [expenseView.purchaseDetails]); const additionTotal = useMemo(() => { - return props.expenseView.purchaseDetails - ? props.expenseView.purchaseDetails.reduce((acc, cur) => { + return expenseView.purchaseDetails + ? expenseView.purchaseDetails.reduce((acc, cur) => { return acc + cur.purchaseReport.addition; }, 0) : 0; - }, [props.expenseView.purchaseDetails]); + }, [expenseView.purchaseDetails]); return ( @@ -42,11 +49,11 @@ const DetailModal: FC = (props) => {

支出元

-

{props.expenseView.expense.name}

+

{expenseView.expense.name}

合計金額

-

{props.expenseView.expense.totalPrice}

+

{expenseView.expense.totalPrice}

割引合計

@@ -73,8 +80,8 @@ const DetailModal: FC = (props) => { - {props.expenseView.purchaseDetails ? ( - props.expenseView.purchaseDetails.map((purchaseDetail) => + {expenseView.purchaseDetails ? ( + expenseView.purchaseDetails.map((purchaseDetail) => purchaseDetail.purchaseItems.map((purchaseItem) => ( diff --git a/view/next-project/src/pages/budgets/index.tsx b/view/next-project/src/pages/budgets/index.tsx index 9ef8e688d..515f062e0 100644 --- a/view/next-project/src/pages/budgets/index.tsx +++ b/view/next-project/src/pages/budgets/index.tsx @@ -77,7 +77,7 @@ export default function BudgetList(props: Props) { return true; }, [currentUser]); - const [forcusExpense, setForcusExpense] = useState(props.expenses[0]); + const [forcusExpense, setForcusExpense] = useState(null); const [isOpen, setIsOpen] = useState(false); const onOpen = (expenseID: number, expenseView: ExpenseView) => { setForcusExpense(expenseView); diff --git a/view/next-project/src/pages/purchasereports/index.tsx b/view/next-project/src/pages/purchasereports/index.tsx index 7e7dc0e12..d85598a84 100644 --- a/view/next-project/src/pages/purchasereports/index.tsx +++ b/view/next-project/src/pages/purchasereports/index.tsx @@ -189,7 +189,7 @@ export default function PurchaseReports(props: Props) { setCurrentUser(res); }; getUser(); - }); + }, []); return ( From 88d7fb38aa5a3d86700db2ba22a05c1c29b4230f Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Wed, 27 Mar 2024 14:39:43 +0000 Subject: [PATCH 072/113] =?UTF-8?q?[feat]=20=E5=B9=B4=E5=BA=A6=E5=88=A5?= =?UTF-8?q?=E3=81=ABexpense=E3=82=92=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8BAP?= =?UTF-8?q?I=E3=81=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/docs/docs.go | 20 ++++++++++++ .../controller/expense_controller.go | 10 ++++++ api/internals/domain/expense.go | 5 +++ api/internals/usecase/expense_usecase.go | 32 +++++++++++++++++++ api/router/router.go | 1 + view/next-project/src/type/common.ts | 5 +++ 6 files changed, 73 insertions(+) diff --git a/api/docs/docs.go b/api/docs/docs.go index 954772d3f..65bb2e18a 100644 --- a/api/docs/docs.go +++ b/api/docs/docs.go @@ -731,6 +731,26 @@ const docTemplate = `{ } }, }, + "/expenses/fiscalyear/{year}": { + "get": { + tags: ["expense"], + "description": "年度で指定されたexpensesを取得", + "parameters": [ + { + "name": "year", + "in": "path", + "description": "year", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "yearで指定されたexpensesを取得", + } + } + }, + }, "/fund_informations": { "get": { tags: ["fund_information"], diff --git a/api/externals/controller/expense_controller.go b/api/externals/controller/expense_controller.go index 5fa2e0138..611ba1543 100644 --- a/api/externals/controller/expense_controller.go +++ b/api/externals/controller/expense_controller.go @@ -21,6 +21,7 @@ type ExpenseController interface { IndexExpenseDetails(echo.Context) error ShowExpenseDetail(echo.Context) error IndexExpenseDetailsByPeriod(echo.Context) error + IndexExpenseByPeriod(echo.Context) error } func NewExpenseController(u usecase.ExpenseUseCase) ExpenseController { @@ -119,3 +120,12 @@ func (e *expenseController) IndexExpenseDetailsByPeriod(c echo.Context) error { } return c.JSON(http.StatusOK, expenseDetails) } + +func (e *expenseController) IndexExpenseByPeriod(c echo.Context) error { + year := c.Param("year") + expense, err := e.u.GetExpensesByPeriod(c.Request().Context(), year) + if err != nil { + return err + } + return c.JSON(http.StatusOK, expense) +} diff --git a/api/internals/domain/expense.go b/api/internals/domain/expense.go index 60055f9bd..a7bad8173 100644 --- a/api/internals/domain/expense.go +++ b/api/internals/domain/expense.go @@ -29,3 +29,8 @@ type ExpenseDetailsByperiod struct { Year Year `json:"year"` PurchaseDetails []PurchaseDetail `json:"purchaseDetails"` } + +type ExpenseByPeriod struct { + Expense Expense `json:"expense"` + Year Year `json:"year"` +} diff --git a/api/internals/usecase/expense_usecase.go b/api/internals/usecase/expense_usecase.go index cedb75c87..5103c31ad 100644 --- a/api/internals/usecase/expense_usecase.go +++ b/api/internals/usecase/expense_usecase.go @@ -23,6 +23,7 @@ type ExpenseUseCase interface { GetExpenseDetails(context.Context) ([]domain.ExpenseDetails, error) GetExpenseDetailByID(context.Context, string) (domain.ExpenseDetails, error) GetExpenseDetailsByPeriod(context.Context, string) ([]domain.ExpenseDetailsByperiod, error) + GetExpensesByPeriod(context.Context, string) ([]domain.ExpenseByPeriod, error) } func NewExpenseUseCase(rep rep.ExpenseRepository) ExpenseUseCase { @@ -350,3 +351,34 @@ func (e *expenseUseCase) GetExpenseDetailsByPeriod(c context.Context, year strin } return expenseDetails, nil } + +func (e *expenseUseCase) GetExpensesByPeriod(c context.Context, year string) ([]domain.ExpenseByPeriod, error) { + ExpenseByperiod := domain.ExpenseByPeriod{} + var expenseByperiods []domain.ExpenseByPeriod + rows, err := e.rep.AllByPeriod(c, year) + if err != nil { + return nil, err + } + for rows.Next() { + err := rows.Scan( + &ExpenseByperiod.Expense.ID, + &ExpenseByperiod.Expense.Name, + &ExpenseByperiod.Expense.TotalPrice, + &ExpenseByperiod.Expense.YearID, + &ExpenseByperiod.Expense.CreatedAt, + &ExpenseByperiod.Expense.UpdatedAt, + &ExpenseByperiod.Year.ID, + &ExpenseByperiod.Year.Year, + &ExpenseByperiod.Year.CreatedAt, + &ExpenseByperiod.Year.UpdatedAt, + ) + if err != nil { + return nil, err + } + expenseByperiods = append(expenseByperiods, ExpenseByperiod) + } + if err := rows.Err(); err != nil { + return nil, err + } + return expenseByperiods, nil +} diff --git a/api/router/router.go b/api/router/router.go index b00227c0e..eedca343d 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -126,6 +126,7 @@ func (r router) ProvideRouter(e *echo.Echo) { e.GET("/expenses/details/:year", r.expenseController.IndexExpenseDetailsByPeriod) e.GET("/expenses/:id", r.expenseController.ShowExpense) e.GET("/expenses/:id/details", r.expenseController.ShowExpenseDetail) + e.GET("/expenses/fiscalyear/:year", r.expenseController.IndexExpenseByPeriod) e.POST("/expenses", r.expenseController.CreateExpense) e.PUT("/expenses/:id", r.expenseController.UpdateExpense) e.DELETE("/expenses/:id", r.expenseController.DestroyExpense) diff --git a/view/next-project/src/type/common.ts b/view/next-project/src/type/common.ts index aa0d215bc..cbd185071 100644 --- a/view/next-project/src/type/common.ts +++ b/view/next-project/src/type/common.ts @@ -67,6 +67,11 @@ export interface ExpenseView { ]; } +export interface ExpenseByPeriods { + expense: Expense; + year: Year; +} + // // PurchaseOrder(購入申請) export interface PurchaseOrder { id?: number; From d5b03d837ba3bc35a1d1281a30a866e80808e8cc Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Wed, 27 Mar 2024 14:40:36 +0000 Subject: [PATCH 073/113] =?UTF-8?q?[fix]=20=E6=96=B0=E8=A6=8FAPI=E3=82=92?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E3=81=97=E3=81=A6=E6=94=AF=E5=87=BA=E6=AC=84?= =?UTF-8?q?=E3=81=AE=E9=81=B8=E6=8A=9E=E8=82=A2=E3=82=92=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=81=95=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchaseorders/OpenAddModalButton.tsx | 14 +++------- .../purchaseorders/PurchaseItemNumModal.tsx | 27 +++++-------------- .../src/pages/purchaseorders/index.tsx | 23 +++++++++------- 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx b/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx index b3a7dc985..4896ff761 100644 --- a/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx +++ b/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx @@ -2,13 +2,12 @@ import React, { useState } from 'react'; import PurchaseItemNumModal from './PurchaseItemNumModal'; import { AddButton } from '@components/common'; -import { Expense, YearPeriod } from '@type/common'; +import { Expense, ExpenseByPeriods } from '@type/common'; interface Props { children?: React.ReactNode; expenses: Expense[]; - yearPeriods: YearPeriod[]; - selectedyear: string; + expenseByPeriods: ExpenseByPeriods[]; } export default function OpenModalButton(props: Props) { @@ -22,14 +21,7 @@ export default function OpenModalButton(props: Props) { > {props.children} - {isOpen && ( - - )} + {isOpen && } ); } diff --git a/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx b/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx index cad82efbd..dcfa6cf9f 100644 --- a/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx +++ b/view/next-project/src/components/purchaseorders/PurchaseItemNumModal.tsx @@ -5,13 +5,12 @@ import { userAtom } from '@/store/atoms'; import { post } from '@api/purchaseOrder'; import { CloseButton, Input, Modal, PrimaryButton, Select } from '@components/common'; import AddModal from '@components/purchaseorders/PurchaseOrderAddModal'; -import { PurchaseItem, PurchaseOrder, Expense, YearPeriod } from '@type/common'; +import { PurchaseItem, PurchaseOrder, Expense, ExpenseByPeriods } from '@type/common'; export interface PurchaseItemNumModalProps { setIsOpen: React.Dispatch>; expenses: Expense[]; - yearPeriods: YearPeriod[]; - selectedYear: string; + expenseByPeriods: ExpenseByPeriods[]; } export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { @@ -97,16 +96,6 @@ export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { setFormDataList(initialPurchaseItemList); }; - //yearPeriodsとselectedYearを紐づける - const selectedYear = props.yearPeriods.find((u) => { - return u.year === parseInt(props.selectedYear); - })?.id; - - console.log(selectedYear); - console.log(props.expenses); - console.log(parseInt(props.selectedYear)); - console.log(props.yearPeriods); - return ( <> @@ -133,13 +122,11 @@ export default function PurchaseItemNumModal(props: PurchaseItemNumModalProps) { onChange={formDataHandler('expenseID')} className='w-full' > - {props.expenses - .filter((expense) => selectedYear === expense.yearID) - .map((data) => ( - - ))} + {props.expenseByPeriods.map((data) => ( + + ))}

購入物品数

diff --git a/view/next-project/src/pages/purchaseorders/index.tsx b/view/next-project/src/pages/purchaseorders/index.tsx index 466abcae8..52cb46acd 100644 --- a/view/next-project/src/pages/purchaseorders/index.tsx +++ b/view/next-project/src/pages/purchaseorders/index.tsx @@ -21,6 +21,7 @@ import { PurchaseOrderView, Expense, YearPeriod, + ExpenseByPeriods, } from '@type/common'; interface Props { @@ -28,6 +29,7 @@ interface Props { purchaseOrderView: PurchaseOrderView[]; expenses: Expense[]; yearPeriods: YearPeriod[]; + expenseByPeriods: ExpenseByPeriods[]; } const date = new Date(); @@ -42,11 +44,18 @@ export async function getServerSideProps() { const getExpenseUrl = process.env.SSR_API_URI + '/expenses'; const purchaseOrderViewRes = await get(getPurchaseOrderViewUrl); const expenseRes = await get(getExpenseUrl); + const getExpenseByPeriodsUrl = + process.env.SSR_API_URI + + '/expenses/fiscalyear/' + + (periodsRes ? String(periodsRes[periodsRes.length - 1].year) : String(date.getFullYear())); + const expenseByPeriodsRes = await get(getExpenseByPeriodsUrl); + return { props: { purchaseOrderView: purchaseOrderViewRes, expenses: expenseRes, yearPeriods: periodsRes, + expenseByPeriods: expenseByPeriodsRes, }, }; } @@ -172,6 +181,8 @@ export default function PurchaseOrders(props: Props) { getUser(); }, []); + console.log(props.expenseByPeriods); + return ( @@ -215,11 +226,7 @@ export default function PurchaseOrders(props: Props) {
- + 申請登録
@@ -399,11 +406,7 @@ export default function PurchaseOrders(props: Props) { /> )}
- +
); From cf98993e8d7264ad87925a1aa83372d199552d98 Mon Sep 17 00:00:00 2001 From: hikahana Date: Wed, 27 Mar 2024 14:41:49 +0000 Subject: [PATCH 074/113] formatted by workflow --- .../src/components/purchaseorders/OpenAddModalButton.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx b/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx index 4896ff761..ff360e65f 100644 --- a/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx +++ b/view/next-project/src/components/purchaseorders/OpenAddModalButton.tsx @@ -21,7 +21,13 @@ export default function OpenModalButton(props: Props) { > {props.children} - {isOpen && } + {isOpen && ( + + )} ); } From 0338db021e1b124b1a7cb572c46b368798346914 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 28 Mar 2024 10:01:19 +0900 Subject: [PATCH 075/113] =?UTF-8?q?[fix]lint=E3=81=AE=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E5=AF=BE=E5=87=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/budgets/DetailModal.tsx | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/view/next-project/src/components/budgets/DetailModal.tsx b/view/next-project/src/components/budgets/DetailModal.tsx index df372cef4..041ae5cc6 100644 --- a/view/next-project/src/components/budgets/DetailModal.tsx +++ b/view/next-project/src/components/budgets/DetailModal.tsx @@ -1,4 +1,4 @@ -import React, { FC, useMemo } from 'react'; +import React, { FC } from 'react'; import { RiCloseCircleLine } from 'react-icons/ri'; import { Modal } from '@components/common'; import { ExpenseView } from '@type/common'; @@ -20,21 +20,18 @@ const DetailModal: FC = (props) => { return <>; } - const discountTotal = useMemo(() => { - return expenseView && expenseView.purchaseDetails + const discountTotal = + expenseView && expenseView.purchaseDetails ? expenseView.purchaseDetails.reduce((acc, cur) => { return acc + cur.purchaseReport.discount; }, 0) : 0; - }, [expenseView.purchaseDetails]); - const additionTotal = useMemo(() => { - return expenseView.purchaseDetails - ? expenseView.purchaseDetails.reduce((acc, cur) => { - return acc + cur.purchaseReport.addition; - }, 0) - : 0; - }, [expenseView.purchaseDetails]); + const additionTotal = expenseView.purchaseDetails + ? expenseView.purchaseDetails.reduce((acc, cur) => { + return acc + cur.purchaseReport.addition; + }, 0) + : 0; return ( From f9ad643a6ad2bdc672b35e3a86e5946ba0235187 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 28 Mar 2024 10:57:59 +0900 Subject: [PATCH 076/113] =?UTF-8?q?[feat]file=E6=83=85=E5=A0=B1=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=81=AB=E4=BC=B4=E3=81=86API=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/docs/docs.go | 4 ++++ .../activity_information_controller.go | 8 ++++++-- .../activity_information_repository.go | 13 ++++++++----- api/internals/domain/activity_information.go | 1 + .../usecase/activity_information_usecase.go | 18 ++++++++++++------ mysql/db/activity_informations.sql | 1 + 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/api/docs/docs.go b/api/docs/docs.go index e06eb3d44..af3bc8826 100644 --- a/api/docs/docs.go +++ b/api/docs/docs.go @@ -2368,6 +2368,10 @@ const docTemplate = `{ "type": "int", "example": 1, }, + "fileInformation":{ + "type": "string", + "example": "", + }, }, }, "activity_style":{ diff --git a/api/externals/controller/activity_information_controller.go b/api/externals/controller/activity_information_controller.go index bbe1c17ec..c91a1d990 100644 --- a/api/externals/controller/activity_information_controller.go +++ b/api/externals/controller/activity_information_controller.go @@ -59,7 +59,9 @@ func (a *activityInformationController) CreateActivityInformation(c echo.Context activityInformation.BucketName, activityInformation.FileName, activityInformation.FileType, - strconv.Itoa(int(activityInformation.DesignProgress))) + strconv.Itoa(int(activityInformation.DesignProgress)), + activityInformation.FileInformation, + ) if err != nil { return err } @@ -80,7 +82,9 @@ func (a *activityInformationController) UpdateActivityInformation(c echo.Context activityInformation.BucketName, activityInformation.FileName, activityInformation.FileType, - strconv.Itoa(int(activityInformation.DesignProgress))) + strconv.Itoa(int(activityInformation.DesignProgress)), + activityInformation.FileInformation) + if err != nil { return err } diff --git a/api/externals/repository/activity_information_repository.go b/api/externals/repository/activity_information_repository.go index 8d3889ddc..8829504bd 100644 --- a/api/externals/repository/activity_information_repository.go +++ b/api/externals/repository/activity_information_repository.go @@ -16,8 +16,8 @@ type activityInformationRepository struct { type ActivityInformationRepository interface { All(context.Context) (*sql.Rows, error) Find(context.Context, string) (*sql.Row, error) - Create(context.Context, string, string, string, string, string) error - Update(context.Context, string, string, string, string, string, string) error + Create(context.Context, string, string, string, string, string, string) error + Update(context.Context, string, string, string, string, string, string, string) error Destroy(context.Context, string) error FindLatestRecord(context.Context) (*sql.Row, error) } @@ -46,13 +46,14 @@ func (ar *activityInformationRepository) Create( fileName string, fileType string, designProgress string, + fileInformation string, ) error { query := ` INSERT INTO activity_informations - (activity_id, bucket_name, file_name, file_type, design_progress) + (activity_id, bucket_name, file_name, file_type, design_progress, file_information) VALUES - (` + activityId + `, "` + bucketName + `", "` + fileName +`", "` + fileType + `", "` + designProgress +`")` + (` + activityId + `, "` + bucketName + `", "` + fileName +`", "` + fileType + `", ` + designProgress +`, "` + fileInformation +`")` return ar.crud.UpdateDB(c, query) } @@ -66,6 +67,7 @@ func (ar *activityInformationRepository) Update( fileName string, fileType string, designProgress string, + fileInformation string, ) error { query := ` @@ -76,7 +78,8 @@ func (ar *activityInformationRepository) Update( `", file_name = "` + fileName + `", file_type = "` + fileType + `", design_progress = ` + designProgress + - ` where id = ` + id + `, file_information = "` + fileInformation + + `" where id = ` + id return ar.crud.UpdateDB(c, query) } diff --git a/api/internals/domain/activity_information.go b/api/internals/domain/activity_information.go index 9a2cb2f02..6f1a19e11 100644 --- a/api/internals/domain/activity_information.go +++ b/api/internals/domain/activity_information.go @@ -11,6 +11,7 @@ type ActivityInformation struct { FileName string `json:"fileName"` FileType string `json:"fileType"` DesignProgress int `json:"designProgress"` + FileInformation string `json:"fileInformation"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } diff --git a/api/internals/usecase/activity_information_usecase.go b/api/internals/usecase/activity_information_usecase.go index 73efb4e42..9649b3b85 100644 --- a/api/internals/usecase/activity_information_usecase.go +++ b/api/internals/usecase/activity_information_usecase.go @@ -15,8 +15,8 @@ type activityInformationUseCase struct { type ActivityInformationUseCase interface { GetActivityInformation(context.Context) ([]domain.ActivityInformation, error) GetActivityInformationByID(context.Context, string) (domain.ActivityInformation, error) - CreateActivityInformation(context.Context, string, string, string, string, string) (domain.ActivityInformation, error) - UpdateActivityInformation(context.Context, string, string, string, string, string, string) (domain.ActivityInformation, error) + CreateActivityInformation(context.Context, string, string, string, string, string, string) (domain.ActivityInformation, error) + UpdateActivityInformation(context.Context, string, string, string, string, string, string, string) (domain.ActivityInformation, error) DestroyActivityInformation(context.Context, string) error } @@ -44,6 +44,7 @@ func (a *activityInformationUseCase) GetActivityInformation(c context.Context) ( &activityInformation.FileName, &activityInformation.FileType, &activityInformation.DesignProgress, + &activityInformation.FileInformation, &activityInformation.CreatedAt, &activityInformation.UpdatedAt, ) @@ -68,6 +69,7 @@ func (a *activityInformationUseCase) GetActivityInformationByID(c context.Contex &activityInformation.FileName, &activityInformation.FileType, &activityInformation.DesignProgress, + &activityInformation.FileInformation, &activityInformation.CreatedAt, &activityInformation.UpdatedAt, ) @@ -85,10 +87,11 @@ func (a *activityInformationUseCase) CreateActivityInformation( bucketName string, fileName string, fileType string, - designProgress string) (domain.ActivityInformation, error) { + designProgress string, + fileInformation string) (domain.ActivityInformation, error) { latastActivityInformation := domain.ActivityInformation{} - err := a.rep.Create(c, activityId, bucketName, fileName, fileType, designProgress) + err := a.rep.Create(c, activityId, bucketName, fileName, fileType, designProgress, fileInformation) row, err := a.rep.FindLatestRecord(c) err = row.Scan( &latastActivityInformation.ID, @@ -97,6 +100,7 @@ func (a *activityInformationUseCase) CreateActivityInformation( &latastActivityInformation.FileName, &latastActivityInformation.FileType, &latastActivityInformation.DesignProgress, + &latastActivityInformation.FileInformation, &latastActivityInformation.CreatedAt, &latastActivityInformation.UpdatedAt, ) @@ -114,9 +118,10 @@ func (a *activityInformationUseCase) UpdateActivityInformation( bucketName string, fileName string, fileType string, - designProgress string) (domain.ActivityInformation, error) { + designProgress string, + fileInformation string) (domain.ActivityInformation, error) { updatedActivityInformation := domain.ActivityInformation{} - err := a.rep.Update(c, id, activityId, bucketName, fileName, fileType, designProgress) + err := a.rep.Update(c, id, activityId, bucketName, fileName, fileType, designProgress, fileInformation) row, err := a.rep.Find(c, id) err = row.Scan( &updatedActivityInformation.ID, @@ -125,6 +130,7 @@ func (a *activityInformationUseCase) UpdateActivityInformation( &updatedActivityInformation.FileName, &updatedActivityInformation.FileType, &updatedActivityInformation.DesignProgress, + &updatedActivityInformation.FileInformation, &updatedActivityInformation.CreatedAt, &updatedActivityInformation.UpdatedAt, diff --git a/mysql/db/activity_informations.sql b/mysql/db/activity_informations.sql index b3cc24e12..63d4c21ed 100644 --- a/mysql/db/activity_informations.sql +++ b/mysql/db/activity_informations.sql @@ -7,6 +7,7 @@ CREATE TABLE activity_informations ( file_name varchar(255), file_type varchar(255), design_progress int(10), + file_information varchar(255), created_at datetime not null default current_timestamp, updated_at datetime not null default current_timestamp on update current_timestamp, PRIMARY KEY (id) From 961d35a4abc17405d3ec961a075d436a44e8a306 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Thu, 28 Mar 2024 11:04:17 +0900 Subject: [PATCH 077/113] =?UTF-8?q?[fix]=E5=8D=94=E8=B3=9B=E6=B4=BB?= =?UTF-8?q?=E5=8B=95=E3=81=AEAPI=E3=81=AB=E5=88=97=E3=81=AE=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/internals/usecase/activity_usecase.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/internals/usecase/activity_usecase.go b/api/internals/usecase/activity_usecase.go index e656ae71e..df0c2b040 100644 --- a/api/internals/usecase/activity_usecase.go +++ b/api/internals/usecase/activity_usecase.go @@ -217,6 +217,7 @@ func (a *activityUseCase) GetActivityDetail(c context.Context) ([]domain.Activit &activityInformation.FileName, &activityInformation.FileType, &activityInformation.DesignProgress, + &activityInformation.FileInformation, &activityInformation.CreatedAt, &activityInformation.UpdatedAt, ) @@ -312,6 +313,7 @@ func (a *activityUseCase) GetActivityDetailsByPeriod(c context.Context, year str &activityInformation.FileName, &activityInformation.FileType, &activityInformation.DesignProgress, + &activityInformation.FileInformation, &activityInformation.CreatedAt, &activityInformation.UpdatedAt, ) From ac61acda926b20e5f9c3e2365c50d8a528f42d65 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 28 Mar 2024 15:20:17 +0900 Subject: [PATCH 078/113] =?UTF-8?q?[feat]=20=E3=83=87=E3=82=B6=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=81=AE=E4=BF=AE=E6=AD=A3=EF=BC=86=E3=83=97=E3=83=AC?= =?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E6=A9=9F=E8=83=BD=E3=81=AE=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sponsoractivities/AddPdfDetailModal.tsx | 17 +- .../createSponsoractivitiesReceiptPDF.tsx | 261 ++++++++++-------- 2 files changed, 163 insertions(+), 115 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/AddPdfDetailModal.tsx b/view/next-project/src/components/sponsoractivities/AddPdfDetailModal.tsx index b610be01d..a3d8f9a01 100644 --- a/view/next-project/src/components/sponsoractivities/AddPdfDetailModal.tsx +++ b/view/next-project/src/components/sponsoractivities/AddPdfDetailModal.tsx @@ -1,6 +1,7 @@ import React, { useState } from 'react'; import { createSponsoractivitiesPDF } from '@/utils/createSponsoractivitiesReceiptPDF'; +import { PreviewPDF } from '@/utils/createSponsoractivitiesReceiptPDF'; import { CloseButton, Input, Modal, PrimaryButton } from '@components/common'; import { SponsorActivityView } from '@type/common'; @@ -52,7 +53,7 @@ export default function AddPdfDetailModal(props: ModalProps) { }; return ( - +
-
+
{ createSponsoractivitiesPDF( @@ -87,12 +88,20 @@ export default function AddPdfDetailModal(props: ModalProps) { formatDate(formData.receivedAt), remarks, ); + props.setIsOpen(false); }} > - 請求書ダウンロード + ダウンロード
+
+ +
); } diff --git a/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx index 85b316a64..b6477dac4 100644 --- a/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx +++ b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx @@ -1,4 +1,4 @@ -import { Document, Page, Text, Font, View, pdf, StyleSheet } from '@react-pdf/renderer'; +import { Document, Page, Text, Font, View, pdf, StyleSheet, PDFViewer } from '@react-pdf/renderer'; import React from 'react'; import { SponsorActivityView } from '@type/common'; @@ -130,135 +130,174 @@ const styles = StyleSheet.create({ }, }); -export const createSponsoractivitiesPDF = async ( - sponsorActivitiesViewItem: SponsorActivityView, - date: string, - remarks: string, -) => { - const formatDate = (date: string) => { - const datetime = date.replace('T', ' '); - const datetime2 = datetime.substring(0, datetime.length - 10); - return datetime2; - }; - const totalPrice = sponsorActivitiesViewItem.styleDetail.reduce((sum, item) => { - return sum + item.sponsorStyle.price; - }, 0); +interface MyDocumentProps { + sponsorActivitiesViewItem: SponsorActivityView; + totalPrice: number; + date: string; + remarks: string; + formatDate: (date: string) => string; +} - const MyDocument = () => ( - - - - 御 請 求 書 - - - - - - {sponsorActivitiesViewItem.sponsor.name} 御中 - - - ご担当 : {sponsorActivitiesViewItem.sponsor.representative} 様 - - - 件名 : 技大祭企業協賛 +const MyDocument = (props: MyDocumentProps) => ( + + + + 御 請 求 書 + + + + + + {props.sponsorActivitiesViewItem.sponsor.name} + {' '} + 御中 + + + ご担当 : {props.sponsorActivitiesViewItem.sponsor.representative} 様 + + + 件名 : 技大祭企業協賛 + + + + 下記の通り、ご請求申し上げます。 - - - 下記の通り、ご請求申し上げます。 + + + 合計金額 ¥ {props.totalPrice} - - - 合計金額 ¥ {totalPrice} - - + + + + 請求日 :{' '} + {props.formatDate(props.sponsorActivitiesViewItem.sponsorActivity.createdAt || '')} + - - 請求日 : {formatDate(sponsorActivitiesViewItem.sponsorActivity.createdAt || '')} - - - - 技大祭実行委員 - 〒940-2137 - 新潟県長岡市上富岡町1603-1 - 長岡技術科学大学 大学集会施設 - - E-Mail : nutfes_shogai_kyosan@googlegroups.com - 担当 : {sponsorActivitiesViewItem.user.name} + + 技大祭実行委員 + 〒940-2137 + 新潟県長岡市上富岡町1603-1 + 長岡技術科学大学 大学集会施設 + E-Mail : nutfes_shogai_kyosan@googlegroups.com + 担当 : {props.sponsorActivitiesViewItem.user.name} - - - No. - 概要 - 数量 - 単価 - 金額 - - {sponsorActivitiesViewItem.styleDetail.map((styleDetail, index) => ( - - {index + 1} - - {styleDetail.sponsorStyle.style} ({styleDetail.sponsorStyle.feature}) - - 1 - - ¥ {styleDetail.sponsorStyle.price} - - - ¥ {styleDetail.sponsorStyle.price} - - - ))} - - - - 合計 - - ¥ {totalPrice} - + + + + No. + 概要 + 数量 + 単価 + 金額 - - - お手数でございますが、{date}までに下記口座へ振込くださいますようお願い申し上げます。 - - <振込先> - 銀 行 名 : 大光銀行(金融機関コード : 0532) - 支 店 名 : 希望ヶ丘支店(支店コード : 042) - 預金種別 : 普通預金 - 口座番号 : 2002151 + {props.sponsorActivitiesViewItem.styleDetail.map((styleDetail, index) => ( + + {index + 1} + + {styleDetail.sponsorStyle.style} ({styleDetail.sponsorStyle.feature}) + + 1 + + ¥ {styleDetail.sponsorStyle.price} + + + ¥ {styleDetail.sponsorStyle.price} + + + ))} + + + + 合計 + + ¥ {props.totalPrice} - - - - - 備考 - - - {remarks} - + + + + お手数でございますが、{props.date}までに下記口座へ振込くださいますようお願い申し上げます。 + + <振込先> + 銀 行 名 : 大光銀行(金融機関コード : 0532) + 支 店 名 : 希望ヶ丘支店(支店コード : 042) + 預金種別 : 普通預金 + 口座番号 : 2002151 + + + + + + 備考 + + + {props.remarks} - - + + + +); + +const CalculateTotalPrice = (sponsorActivitiesViewItem: SponsorActivityView): number => { + const totalPrice = sponsorActivitiesViewItem.styleDetail.reduce((totalPriceAccumulator, item) => { + return totalPriceAccumulator + item.sponsorStyle.price; + }, 0); + return totalPrice; +}; + +const formatDate = (datetime: string) => { + const datetime2 = datetime.substring(0, datetime.length - 10); + return datetime2; +}; + +export const createSponsoractivitiesPDF = async ( + sponsorActivitiesViewItem: SponsorActivityView, + date: string, + remarks: string, +) => { + const asPdf = pdf( + , ); - const asPdf = pdf(); - await asPdf.toBlob(); - asPdf.updateContainer(); const blob = await asPdf.toBlob(); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; - link.download = - formatDate(sponsorActivitiesViewItem.sponsorActivity.createdAt || '') + - '-' + - sponsorActivitiesViewItem.sponsor.name + - '-請求書.pdf'; + link.download = `${formatDate(sponsorActivitiesViewItem.sponsorActivity.createdAt || '')}-${ + sponsorActivitiesViewItem.sponsor.name + }-請求書.pdf`; link.click(); }; + +interface PreviewProps { + sponsorActivitiesViewItem: SponsorActivityView; + date: string; + remarks: string; +} + +export const PreviewPDF: React.FC = ({ + sponsorActivitiesViewItem, + date, + remarks, +}) => ( + + + +); From dbab5d6d1c2f7ac39dfb08db79e0ffa40835c930 Mon Sep 17 00:00:00 2001 From: TkymHrt Date: Thu, 28 Mar 2024 06:40:34 +0000 Subject: [PATCH 079/113] formatted by workflow --- .../src/components/sponsoractivities/DetailModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/next-project/src/components/sponsoractivities/DetailModal.tsx b/view/next-project/src/components/sponsoractivities/DetailModal.tsx index 3bbbffea2..a5aa341e5 100644 --- a/view/next-project/src/components/sponsoractivities/DetailModal.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailModal.tsx @@ -221,7 +221,7 @@ const DetailModal: FC = (props) => { )} -
+
Date: Thu, 28 Mar 2024 16:57:06 +0900 Subject: [PATCH 080/113] =?UTF-8?q?[fix]=20=E5=82=99=E8=80=83=E3=81=AE?= =?UTF-8?q?=E6=96=87=E5=AD=97=E3=82=92=E6=8A=98=E3=82=8A=E8=BF=94=E3=81=99?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/utils/createSponsoractivitiesReceiptPDF.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx index b6477dac4..1dd8da454 100644 --- a/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx +++ b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx @@ -235,7 +235,9 @@ const MyDocument = (props: MyDocumentProps) => ( 備考 - {props.remarks} + {(props.remarks.match(/.{1,40}/g) || []).map((chunk, index) => ( + {chunk} + ))} From ab9421287b8a8070559c1b54e84e96494da9f4e5 Mon Sep 17 00:00:00 2001 From: TkymHrt <23.h.takayama.nutfes@gmail.com> Date: Thu, 28 Mar 2024 17:10:22 +0900 Subject: [PATCH 081/113] =?UTF-8?q?[fix]=20PDF=E3=83=84=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=92=E9=9D=9E=E8=A1=A8=E7=A4=BA=E3=81=AB?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/utils/createSponsoractivitiesReceiptPDF.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx index 1dd8da454..47411b716 100644 --- a/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx +++ b/view/next-project/src/utils/createSponsoractivitiesReceiptPDF.tsx @@ -293,7 +293,7 @@ export const PreviewPDF: React.FC = ({ date, remarks, }) => ( - + Date: Fri, 29 Mar 2024 17:03:06 +0900 Subject: [PATCH 082/113] =?UTF-8?q?[feat]=E5=BA=83=E5=91=8A=E3=81=AE?= =?UTF-8?q?=E3=82=B9=E3=83=86=E3=83=BC=E3=82=BF=E3=82=B9=E3=81=A8=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E3=82=92=E7=B7=A8=E9=9B=86=E5=8F=AF=E8=83=BD=E3=81=AB?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sponsoractivities/DetailPage2.tsx | 148 ++++++++++++++++-- .../sponsoractivities/UploadFileModal.tsx | 1 + view/next-project/src/type/common.ts | 1 + 3 files changed, 139 insertions(+), 11 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx index 72ec940a2..6378876d6 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx @@ -2,11 +2,19 @@ import { clsx } from 'clsx'; import { saveAs } from 'file-saver'; import React, { FC, useEffect, useState } from 'react'; -import { FaChevronCircleLeft } from 'react-icons/fa'; +import { FaChevronCircleLeft, FaCheckCircle } from 'react-icons/fa'; import { FiPlusSquare } from 'react-icons/fi'; -import { DeleteButton, OutlinePrimaryButton, PrimaryButton } from '../common'; +import { RiCloseCircleLine } from 'react-icons/ri'; +import { + DeleteButton, + EditButton, + Input, + OutlinePrimaryButton, + PrimaryButton, + Select, +} from '../common'; import UplaodFileModal from './UploadFileModal'; -import { post, del } from '@/utils/api/api_methods'; +import { post, del, put } from '@/utils/api/api_methods'; import { DESIGN_PROGRESSES } from '@constants/designProgresses'; import { SponsorActivityView, SponsorActivityInformation } from '@type/common'; @@ -25,10 +33,16 @@ const DetailPage2: FC = (props) => { }; const [isOpen, setIsOpen] = useState(false); const [editActivityInformationId, setEditActivityInformationId] = useState(0); + const [activityInformationData, setActivityInformationData] = useState(''); const [sponsorActivityInformations, setSponsorActivityInformations] = useState< SponsorActivityInformation[] >(props.sponsorActivitiesViewItem.sponsorActivityInformations || []); + const [isEditInformations, setIsEditInformations] = useState( + sponsorActivityInformations.map(() => { + return false; + }), + ); useEffect(() => { const newSponsorActivitiesView = { @@ -67,7 +81,6 @@ const DetailPage2: FC = (props) => { const newSponsorActivityInformations = sponsorActivityInformations.filter( (sponsorActivityInformation) => sponsorActivityInformation.id !== id, ); - console.log(newSponsorActivityInformations); if (activityInformation.fileName === '') { const res = await del(deleteSponsorActivityInformationUrl); } else { @@ -91,13 +104,63 @@ const DetailPage2: FC = (props) => { fileName: '', fileType: '', designProgress: 1, + fileInformation: '', }; const res = await post(sponsorActivitiesUrl, nullData); const newSponsorActivityInformations = [...sponsorActivityInformations, res]; setSponsorActivityInformations(newSponsorActivityInformations); + setIsEditInformations([...isEditInformations, false]); + props.setIsChange(true); + }; + + const handleUpdateProgress = async ( + e: React.ChangeEvent, + activityInformation: SponsorActivityInformation, + ) => { + const sponsorActivitiesUrl = + process.env.CSR_API_URI + '/activity_informations/' + activityInformation.id; + const updateActivityInformation = { + ...activityInformation, + designProgress: Number(e.target.value), + }; + const res = await put(sponsorActivitiesUrl, updateActivityInformation); + const newSponsorActivityInformations = sponsorActivityInformations.map( + (sponsorActivityInformation) => { + if (sponsorActivityInformation.id === activityInformation.id) { + return updateActivityInformation; + } + return sponsorActivityInformation; + }, + ); + setSponsorActivityInformations(newSponsorActivityInformations); props.setIsChange(true); }; + const handleUpdateInformation = async (activityInformation: SponsorActivityInformation) => { + const sponsorActivitiesUrl = + process.env.CSR_API_URI + '/activity_informations/' + activityInformation.id; + const updateActivityInformation = { + ...activityInformation, + fileInformation: activityInformationData, + }; + const res = await put(sponsorActivitiesUrl, updateActivityInformation); + const newSponsorActivityInformations = sponsorActivityInformations.map( + (sponsorActivityInformation) => { + if (sponsorActivityInformation.id === activityInformation.id) { + return updateActivityInformation; + } + return sponsorActivityInformation; + }, + ); + setSponsorActivityInformations(newSponsorActivityInformations); + props.setIsChange(true); + setIsEditInformations( + isEditInformations.map(() => { + return false; + }), + ); + }; + return ( <>

協賛スタイル

@@ -152,7 +215,7 @@ const DetailPage2: FC = (props) => { {sponsorActivityInformations && sponsorActivityInformations.map((activityInformation, index) => ( <> -
+
-
-
-
-

広告の状況

+
+
+
+
+
+

広告状況

+ +
+
+
+
+

情報

+ {isEditInformations[index] ? ( + <> + { + setActivityInformationData(e.target.value); + }} + /> + { + setIsEditInformations( + isEditInformations.map(() => { + return false; + }), + ); + }} + /> + { + handleUpdateInformation(activityInformation); + }} + /> + + ) : activityInformation.fileInformation.trim() === '' ? ( +

   

+ ) : (

- {designProgresses && designProgresses[index].state} + {activityInformation.fileInformation}

-
+ )} + {!isEditInformations[index] && ( + { + const newIsEditInformations = isEditInformations.map( + (isEditInformation, editIndex) => { + return index === editIndex; + }, + ); + setActivityInformationData(activityInformation.fileInformation || ''); + setIsEditInformations(newIsEditInformations); + }} + /> + )}
diff --git a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx index 024f64885..be9b7a880 100644 --- a/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx +++ b/view/next-project/src/components/sponsoractivities/UploadFileModal.tsx @@ -30,6 +30,7 @@ const UplaodFileModal: FC = (props) => { fileName: '', fileType: '', designProgress: 1, + fileInformation: '', }, ); diff --git a/view/next-project/src/type/common.ts b/view/next-project/src/type/common.ts index 3d7107ee0..5d1da52f9 100644 --- a/view/next-project/src/type/common.ts +++ b/view/next-project/src/type/common.ts @@ -138,6 +138,7 @@ export interface SponsorActivityInformation { fileName: string; fileType: string; designProgress: number; + fileInformation: string; createdAt?: string; updatedAt?: string; } From 698c778dfea01811a86674fcac886d02254175db Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Fri, 29 Mar 2024 17:21:52 +0900 Subject: [PATCH 083/113] =?UTF-8?q?[fix]lint=E3=81=AB=E4=BC=B4=E3=81=86?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/sponsoractivities/DetailModal.tsx | 1 - .../src/components/sponsoractivities/DetailPage1.tsx | 2 +- .../src/components/sponsoractivities/DetailPage2.tsx | 6 +++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/DetailModal.tsx b/view/next-project/src/components/sponsoractivities/DetailModal.tsx index 17bb511a9..760a581b6 100644 --- a/view/next-project/src/components/sponsoractivities/DetailModal.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailModal.tsx @@ -1,6 +1,5 @@ import { useRouter } from 'next/router'; import React, { FC, useState } from 'react'; -import { RiCloseCircleLine } from 'react-icons/ri'; import DetailPage1 from './DetailPage1'; import DetailPage2 from './DetailPage2'; import { Modal } from '@components/common'; diff --git a/view/next-project/src/components/sponsoractivities/DetailPage1.tsx b/view/next-project/src/components/sponsoractivities/DetailPage1.tsx index e4ca93c9a..b2e06e461 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage1.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage1.tsx @@ -2,9 +2,9 @@ import { clsx } from 'clsx'; import React, { FC } from 'react'; import { FaChevronCircleRight } from 'react-icons/fa'; +import OpenPaymentDayModalButton from './OpenPaymentDayModalButton'; import { DESIGNERS } from '@constants/designers'; import { SponsorActivityView } from '@type/common'; -import OpenPaymentDayModalButton from './OpenPaymentDayModalButton'; interface ModalProps { setPageNum: (isOpen: number) => void; diff --git a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx index 6378876d6..b7dcf0bb8 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage2.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage2.tsx @@ -237,7 +237,11 @@ const DetailPage2: FC = (props) => { }} > {DESIGN_PROGRESSES.map((designProgress) => { - return ; + return ( + + ); })}
From 170a69f1a89eca250097b9cdb1714bb8a3e7e0c0 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Fri, 29 Mar 2024 17:28:13 +0900 Subject: [PATCH 084/113] =?UTF-8?q?[fix]lint=E3=81=AB=E4=BC=B4=E3=81=86?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E3=81=A8=E9=96=89=E3=81=98=E3=82=8B=E3=83=9C?= =?UTF-8?q?=E3=82=BF=E3=83=B3=E3=81=AE=E5=BE=A9=E5=85=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/sponsoractivities/DetailModal.tsx | 10 ++++------ .../src/components/sponsoractivities/DetailPage2.tsx | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/DetailModal.tsx b/view/next-project/src/components/sponsoractivities/DetailModal.tsx index 760a581b6..f357c78a6 100644 --- a/view/next-project/src/components/sponsoractivities/DetailModal.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailModal.tsx @@ -1,5 +1,6 @@ import { useRouter } from 'next/router'; import React, { FC, useState } from 'react'; +import { RiCloseCircleLine } from 'react-icons/ri'; import DetailPage1 from './DetailPage1'; import DetailPage2 from './DetailPage2'; import { Modal } from '@components/common'; @@ -27,14 +28,11 @@ const DetailModal: FC = (props) => { }; const [pageNum, setPageNum] = useState(1); - const formatDate = (date: string) => { - const datetime = date.replace('T', ' '); - const datetime2 = datetime.substring(0, datetime.length - 10); - return datetime2; - }; - return ( +
+ +
{pageNum === 1 && ( = (props) => { /> ) : activityInformation.fileInformation.trim() === '' ? ( -

   

+

____

) : (

{activityInformation.fileInformation} From aadf11426cf7bc7d31fd6700958cac878a938f35 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Fri, 29 Mar 2024 08:54:03 +0000 Subject: [PATCH 085/113] formatted by workflow --- view/next-project/package-lock.json | 252 +++++++++--------- .../sponsoractivities/DetailPage1.tsx | 2 +- 2 files changed, 127 insertions(+), 127 deletions(-) diff --git a/view/next-project/package-lock.json b/view/next-project/package-lock.json index 333c9efb4..a72c22a1b 100644 --- a/view/next-project/package-lock.json +++ b/view/next-project/package-lock.json @@ -1722,6 +1722,21 @@ "node": ">= 10" } }, + "node_modules/@next/swc-darwin-x64": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.2.tgz", + "integrity": "sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@next/swc-linux-arm64-gnu": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.2.tgz", @@ -1752,6 +1767,81 @@ "node": ">= 10" } }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.2.tgz", + "integrity": "sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.2.tgz", + "integrity": "sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.2.tgz", + "integrity": "sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.2.tgz", + "integrity": "sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.2.tgz", + "integrity": "sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -8274,96 +8364,6 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.2.tgz", - "integrity": "sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.2.tgz", - "integrity": "sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.2.tgz", - "integrity": "sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.2.tgz", - "integrity": "sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.2.tgz", - "integrity": "sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.2.tgz", - "integrity": "sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } } }, "dependencies": { @@ -9647,6 +9647,12 @@ "integrity": "sha512-6BBlqGu3ewgJflv9iLCwO1v1hqlecaIH2AotpKfVUEzUxuuDNJQZ2a4KLb4MBl8T9/vca1YuWhSqtbF6ZuUJJw==", "optional": true }, + "@next/swc-darwin-x64": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.2.tgz", + "integrity": "sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg==", + "optional": true + }, "@next/swc-linux-arm64-gnu": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.2.tgz", @@ -9659,6 +9665,36 @@ "integrity": "sha512-wKRCQ27xCUJx5d6IivfjYGq8oVngqIhlhSAJntgXLt7Uo9sRT/3EppMHqUZRfyuNBTbykEre1s5166z+pvRB5A==", "optional": true }, + "@next/swc-linux-x64-gnu": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.2.tgz", + "integrity": "sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA==", + "optional": true + }, + "@next/swc-linux-x64-musl": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.2.tgz", + "integrity": "sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ==", + "optional": true + }, + "@next/swc-win32-arm64-msvc": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.2.tgz", + "integrity": "sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ==", + "optional": true + }, + "@next/swc-win32-ia32-msvc": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.2.tgz", + "integrity": "sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw==", + "optional": true + }, + "@next/swc-win32-x64-msvc": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.2.tgz", + "integrity": "sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw==", + "optional": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -14337,42 +14373,6 @@ "version": "3.21.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==" - }, - "@next/swc-darwin-x64": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.2.tgz", - "integrity": "sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.2.tgz", - "integrity": "sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.2.tgz", - "integrity": "sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.2.tgz", - "integrity": "sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.2.tgz", - "integrity": "sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.2.tgz", - "integrity": "sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw==", - "optional": true } } } diff --git a/view/next-project/src/components/sponsoractivities/DetailPage1.tsx b/view/next-project/src/components/sponsoractivities/DetailPage1.tsx index 57ec3e398..97cce2f4d 100644 --- a/view/next-project/src/components/sponsoractivities/DetailPage1.tsx +++ b/view/next-project/src/components/sponsoractivities/DetailPage1.tsx @@ -2,8 +2,8 @@ import { clsx } from 'clsx'; import React, { FC } from 'react'; import { FaChevronCircleRight } from 'react-icons/fa'; -import OpenPaymentDayModalButton from './OpenPaymentDayModalButton'; import OpenAddPdfDetailModalButton from './OpenAddPdfDetailModalButton'; +import OpenPaymentDayModalButton from './OpenPaymentDayModalButton'; import { DESIGNERS } from '@constants/designers'; import { SponsorActivityView } from '@type/common'; From 1f8c2e9f8d6c7efa7a3399f21ea9c40b7f96d052 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Sun, 31 Mar 2024 14:04:12 +0900 Subject: [PATCH 086/113] =?UTF-8?q?[feat]=E8=B3=BC=E5=85=A5=E5=A0=B1?= =?UTF-8?q?=E5=91=8A=E3=81=8B=E3=82=89=E9=81=B8=E6=8A=9E=E3=81=99=E3=82=8B?= =?UTF-8?q?=E6=94=AF=E5=87=BA=E5=85=83=E3=82=92=E5=B9=B4=E5=BA=A6=E3=81=A7?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/expense_repository.go | 17 ++++++ api/internals/usecase/expense_usecase.go | 26 ++++---- .../PurchaseReportItemNumModal.tsx | 59 +++++++++++++++---- 3 files changed, 75 insertions(+), 27 deletions(-) diff --git a/api/externals/repository/expense_repository.go b/api/externals/repository/expense_repository.go index 3f79e0c27..ee7213c4c 100644 --- a/api/externals/repository/expense_repository.go +++ b/api/externals/repository/expense_repository.go @@ -24,6 +24,7 @@ type ExpenseRepository interface { AllItemInfo(context.Context, string) (*sql.Rows, error) AllOrderAndReportInfo(context.Context, string) (*sql.Rows, error) AllByPeriod(context.Context, string) (*sql.Rows, error) + OnlyExpensesByPeriod(context.Context, string) (*sql.Rows, error) } func NewExpenseRepository(c db.Client, ac abstract.Crud) ExpenseRepository { @@ -124,3 +125,19 @@ func (er *expenseRepository) AllByPeriod(c context.Context, year string) (*sql.R " ORDER BY expenses.id;" return er.crud.Read(c, query) } + +func (er *expenseRepository) OnlyExpensesByPeriod(c context.Context, year string) (*sql.Rows, error) { + query := ` + SELECT + expenses.* + FROM + expenses + INNER JOIN + years + ON + expenses.yearID = years.id + WHERE + years.year = ` + year + + " ORDER BY expenses.id;" + return er.crud.Read(c, query) +} diff --git a/api/internals/usecase/expense_usecase.go b/api/internals/usecase/expense_usecase.go index 5103c31ad..bbfabdeb8 100644 --- a/api/internals/usecase/expense_usecase.go +++ b/api/internals/usecase/expense_usecase.go @@ -23,7 +23,7 @@ type ExpenseUseCase interface { GetExpenseDetails(context.Context) ([]domain.ExpenseDetails, error) GetExpenseDetailByID(context.Context, string) (domain.ExpenseDetails, error) GetExpenseDetailsByPeriod(context.Context, string) ([]domain.ExpenseDetailsByperiod, error) - GetExpensesByPeriod(context.Context, string) ([]domain.ExpenseByPeriod, error) + GetExpensesByPeriod(context.Context, string) ([]domain.Expense, error) } func NewExpenseUseCase(rep rep.ExpenseRepository) ExpenseUseCase { @@ -352,25 +352,21 @@ func (e *expenseUseCase) GetExpenseDetailsByPeriod(c context.Context, year strin return expenseDetails, nil } -func (e *expenseUseCase) GetExpensesByPeriod(c context.Context, year string) ([]domain.ExpenseByPeriod, error) { - ExpenseByperiod := domain.ExpenseByPeriod{} - var expenseByperiods []domain.ExpenseByPeriod - rows, err := e.rep.AllByPeriod(c, year) +func (e *expenseUseCase) GetExpensesByPeriod(c context.Context, year string) ([]domain.Expense, error) { + ExpenseByperiod := domain.Expense{} + var expenseByperiods []domain.Expense + rows, err := e.rep.OnlyExpensesByPeriod(c, year) if err != nil { return nil, err } for rows.Next() { err := rows.Scan( - &ExpenseByperiod.Expense.ID, - &ExpenseByperiod.Expense.Name, - &ExpenseByperiod.Expense.TotalPrice, - &ExpenseByperiod.Expense.YearID, - &ExpenseByperiod.Expense.CreatedAt, - &ExpenseByperiod.Expense.UpdatedAt, - &ExpenseByperiod.Year.ID, - &ExpenseByperiod.Year.Year, - &ExpenseByperiod.Year.CreatedAt, - &ExpenseByperiod.Year.UpdatedAt, + &ExpenseByperiod.ID, + &ExpenseByperiod.Name, + &ExpenseByperiod.TotalPrice, + &ExpenseByperiod.YearID, + &ExpenseByperiod.CreatedAt, + &ExpenseByperiod.UpdatedAt, ) if err != nil { return nil, err diff --git a/view/next-project/src/components/purchasereports/PurchaseReportItemNumModal.tsx b/view/next-project/src/components/purchasereports/PurchaseReportItemNumModal.tsx index a4e68dfe8..325cad59e 100644 --- a/view/next-project/src/components/purchasereports/PurchaseReportItemNumModal.tsx +++ b/view/next-project/src/components/purchasereports/PurchaseReportItemNumModal.tsx @@ -14,22 +14,37 @@ import { } from '@components/common'; import PurchaseReportAddModal from '@components/purchasereports/PurchaseReportAddModal'; import { useUI } from '@components/ui/context'; -import { PurchaseItem, PurchaseOrder, Expense } from '@type/common'; +import { PurchaseItem, PurchaseOrder, Expense, YearPeriod } from '@type/common'; import { get } from '@utils/api/api_methods'; export default function PurchaseReportItemNumModal() { + const date = new Date(); + const [selectedYear, setSelectedYear] = useState(date.getFullYear()); + const [yearPeriods, setYearPeriods] = useState([]); + useEffect(() => { + const getPurchaseReportsUrl = process.env.CSR_API_URI + '/years/periods'; + const getPeriods = async () => { + const res = await get(getPurchaseReportsUrl); + const year = res ? res[res.length - 1].year : date.getFullYear(); + setSelectedYear(year); + setYearPeriods(res); + }; + getPeriods(); + }, []); + const [user] = useRecoilState(userAtom); const [expenses, setExpenses] = useState([]); const [expenseID, setExpenseID] = useState(1); useEffect(() => { - const getExpensesUrl = process.env.CSR_API_URI + '/expenses'; + const getExpenseByPeriodsUrl = + process.env.CSR_API_URI + '/expenses/fiscalyear/' + String(selectedYear); const getExpenses = async () => { - const res = await get(getExpensesUrl); + const res = await get(getExpenseByPeriodsUrl); setExpenses(res); }; getExpenses(); - }, []); + }, [selectedYear]); const { setModalView, openModal, closeModal } = useUI(); @@ -137,22 +152,42 @@ export default function PurchaseReportItemNumModal() {

-
-

購入した局・団体

-
+
+
+

年度

+
+
+
+

購入した局・団体

+
+
+ +
From 8f3348b4db667f692531946b2d3a423a5c4e32fa Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Sun, 31 Mar 2024 14:22:02 +0900 Subject: [PATCH 087/113] =?UTF-8?q?[fix]=E5=B9=B4=E5=BA=A6=E3=81=8C?= =?UTF-8?q?=E5=88=87=E3=82=8A=E6=9B=BF=E3=82=8F=E3=81=A3=E3=81=9F=E9=9A=9B?= =?UTF-8?q?=E3=81=AEexpenseID=E3=81=AE=E5=88=9D=E6=9C=9F=E5=80=A4=E3=82=92?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchasereports/PurchaseReportItemNumModal.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/view/next-project/src/components/purchasereports/PurchaseReportItemNumModal.tsx b/view/next-project/src/components/purchasereports/PurchaseReportItemNumModal.tsx index 325cad59e..697c38a12 100644 --- a/view/next-project/src/components/purchasereports/PurchaseReportItemNumModal.tsx +++ b/view/next-project/src/components/purchasereports/PurchaseReportItemNumModal.tsx @@ -34,7 +34,7 @@ export default function PurchaseReportItemNumModal() { const [user] = useRecoilState(userAtom); const [expenses, setExpenses] = useState([]); - const [expenseID, setExpenseID] = useState(1); + const [expenseID, setExpenseID] = useState(0); useEffect(() => { const getExpenseByPeriodsUrl = @@ -42,6 +42,7 @@ export default function PurchaseReportItemNumModal() { const getExpenses = async () => { const res = await get(getExpenseByPeriodsUrl); setExpenses(res); + setExpenseID(res[0].id); }; getExpenses(); }, [selectedYear]); @@ -93,7 +94,7 @@ export default function PurchaseReportItemNumModal() { deadline: String(year) + '-' + monthStr + '-' + dayStr, userID: user.id, financeCheck: false, - expenseID: expenseID, + expenseID: expenseID || 0, }; const addPurchaseOrderUrl = process.env.CSR_API_URI + '/purchaseorders'; const postRes = await post(addPurchaseOrderUrl, data); From c62186610fa374b6aa583574aa8cfab4b4c03a83 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Sun, 31 Mar 2024 14:37:49 +0900 Subject: [PATCH 088/113] =?UTF-8?q?[fix]=E4=BD=9C=E6=88=90=E6=97=A5?= =?UTF-8?q?=E6=99=82=E3=81=AE=E5=88=97=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/sponsoractivities/index.tsx | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/view/next-project/src/pages/sponsoractivities/index.tsx b/view/next-project/src/pages/sponsoractivities/index.tsx index 064abb325..e3eed8f2f 100644 --- a/view/next-project/src/pages/sponsoractivities/index.tsx +++ b/view/next-project/src/pages/sponsoractivities/index.tsx @@ -418,9 +418,6 @@ export default function SponsorActivities(props: Props) {
交通費
- -
作成日時
-
@@ -538,19 +535,6 @@ export default function SponsorActivities(props: Props) { {sponsorActivitiesItem.sponsorActivity.expense}
- { - onOpen( - sponsorActivitiesItem.sponsorActivity.id || 0, - sponsorActivitiesItem, - ); - }} - > -
- {sponsorActivitiesItem.sponsorActivity.createdAt && - formatDate(sponsorActivitiesItem.sponsorActivity.createdAt)} -
-
From 8b5c424e8cc153be091c077f4a7430def8f7c315 Mon Sep 17 00:00:00 2001 From: Kubosaka Date: Sun, 31 Mar 2024 15:06:00 +0900 Subject: [PATCH 089/113] =?UTF-8?q?[fix]=E3=82=AA=E3=83=97=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=83=9D=E3=82=B9=E3=82=BF=E3=83=BC=E3=81=AE?= =?UTF-8?q?=E5=89=8A=E9=99=A4=E3=81=A8=E4=BA=A4=E9=80=9A=E8=B2=BB=E3=82=92?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E5=85=A5=E5=8A=9B=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SponsorActivitiesAddModal.tsx | 35 ++++--------------- 1 file changed, 6 insertions(+), 29 deletions(-) diff --git a/view/next-project/src/components/sponsoractivities/SponsorActivitiesAddModal.tsx b/view/next-project/src/components/sponsoractivities/SponsorActivitiesAddModal.tsx index d524cc014..0e9a2853f 100644 --- a/view/next-project/src/components/sponsoractivities/SponsorActivitiesAddModal.tsx +++ b/view/next-project/src/components/sponsoractivities/SponsorActivitiesAddModal.tsx @@ -20,7 +20,7 @@ import { SponsorActivity, Sponsor, SponsorStyle, User } from '@type/common'; const TABLE_COLUMNS = ['企業名', '協賛スタイル', '担当者名', '回収状況']; -const TABLE_COLUMNS2 = ['オプション', 'デザイン作成', '移動距離(km)', '交通費']; +const TABLE_COLUMNS2 = ['オプション', 'デザイン作成', '交通費']; interface Props { users: User[]; @@ -31,7 +31,6 @@ interface Props { const REMARK_COUPON = `<クーポン> [詳細 : ○○]\n`; const REMARK_PAMPHLET = `<パンフレット掲載内容> [企業名 : x],[住所 : x],[HP : x],[ロゴ : x],[営業時間 : x],[電話番号 : x],[キャッチコピー : x],[地図 : x],[その他 : ]\n`; -const REMARK_POSTER = `<ポスター掲載内容> パンフレット広告拡大\n`; export default function SponsorActivitiesAddModal(props: Props) { const router = useRouter(); @@ -55,12 +54,7 @@ export default function SponsorActivitiesAddModal(props: Props) { }); const setDesign = (e: React.ChangeEvent) => { - const remarkOption = - formData.feature === 'ポスター' - ? REMARK_POSTER - : formData.feature === 'クーポン' - ? REMARK_COUPON - : ''; + const remarkOption = formData.feature === 'クーポン' ? REMARK_COUPON : ''; const newRemarkDesign = e.target.value === '1' ? REMARK_PAMPHLET : ''; setFormData({ ...formData, @@ -70,12 +64,7 @@ export default function SponsorActivitiesAddModal(props: Props) { }; const setFeature = (e: React.ChangeEvent) => { - const newRemarkOption = - e.target.value === 'ポスター' - ? REMARK_POSTER - : e.target.value === 'クーポン' - ? REMARK_COUPON - : ''; + const newRemarkOption = e.target.value === 'クーポン' ? REMARK_COUPON : ''; const remarkDesign = formData.design === 1 ? REMARK_PAMPHLET : ''; setFormData({ ...formData, @@ -123,7 +112,7 @@ export default function SponsorActivitiesAddModal(props: Props) { const submit = (data: SponsorActivity) => { const { expense, userID, sponsorID, ...rest } = data; const submitData: SponsorActivity = { - expense: Math.round(expense * 11), + expense: Number(expense), userID: Number(userID), sponsorID: Number(sponsorID), ...rest, @@ -239,9 +228,6 @@ export default function SponsorActivitiesAddModal(props: Props) { - @@ -267,7 +253,7 @@ export default function SponsorActivitiesAddModal(props: Props) {
))}
-

移動距離(km)

+

交通費

-

交通費

-
-

{Math.round(data.expense * 11)}円

-

備考