From 01298253356f672742e80cd5ac63de3fc5ab8db0 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 2 Aug 2023 00:14:05 +0800 Subject: [PATCH] :art: database --- app/src/protyle/render/av/cell.ts | 6 ++++-- app/src/protyle/render/av/date.ts | 11 +++++++---- app/src/protyle/render/av/filter.ts | 6 ++++-- app/src/protyle/render/av/render.ts | 14 ++++++++------ app/src/types/index.d.ts | 10 +++++++++- 5 files changed, 32 insertions(+), 15 deletions(-) diff --git a/app/src/protyle/render/av/cell.ts b/app/src/protyle/render/av/cell.ts index 4f03f1921..60f268b69 100644 --- a/app/src/protyle/render/av/cell.ts +++ b/app/src/protyle/render/av/cell.ts @@ -66,7 +66,7 @@ export const getCalcValue = (column: IAVColumn) => { export const genCellValue = (colType: TAVCol, value: string | { content: string, color: string -}[] | { content?: number, content2?: number, hasEndDate?: boolean }) => { +}[] | IAVCellDateValue) => { let cellValue: IAVCellValue; if (typeof value === "string") { if (colType === "number") { @@ -106,7 +106,9 @@ export const genCellValue = (colType: TAVCol, value: string | { type: colType, date: { content: null, + isNotEmpty: false, content2: null, + isNotEmpty2: false, hasEndDate: false, } }; @@ -123,7 +125,7 @@ export const genCellValue = (colType: TAVCol, value: string | { } else if (colType === "date") { cellValue = { type: colType, - date: value as { content?: number, content2?: number, hasEndDate?: boolean } + date: value as IAVCellDateValue }; } } diff --git a/app/src/protyle/render/av/date.ts b/app/src/protyle/render/av/date.ts index 79107e21a..a36ef6c3d 100644 --- a/app/src/protyle/render/av/date.ts +++ b/app/src/protyle/render/av/date.ts @@ -3,7 +3,7 @@ import * as dayjs from "dayjs"; export const getDateHTML = (data: IAVTable, cellElements: HTMLElement[]) => { let hasEndDate = true; - let cellValue:IAVCell; + let cellValue: IAVCell; cellElements.forEach((cellElement) => { data.rows.find(row => { if (cellElement.parentElement.dataset.id === row.id) { @@ -24,11 +24,11 @@ export const getDateHTML = (data: IAVTable, cellElements: HTMLElement[]) => { hasEndDate = false; } let value = ""; - if (cellValue?.value?.date?.content) { + if (cellValue?.value?.date?.isNotEmpty) { value = dayjs(cellValue.value.date.content).format("YYYY-MM-DDTHH:mm"); } let value2 = ""; - if (cellValue?.value?.date?.content2) { + if (cellValue?.value?.date?.isNotEmpty2) { value2 = dayjs(cellValue.value.date.content2).format("YYYY-MM-DDTHH:mm"); } return `
@@ -128,7 +128,10 @@ export const setDateValue = (options: { cellData.value = {}; } oldValue = Object.assign({}, cellData.value.date); - cellData.value.date = Object.assign(cellData.value.date || {}, options.value); + cellData.value.date = Object.assign(cellData.value.date || { + isNotEmpty2: false, + isNotEmpty: false + }, options.value); return true; } }); diff --git a/app/src/protyle/render/av/filter.ts b/app/src/protyle/render/av/filter.ts index 373f361a2..3cd93d858 100644 --- a/app/src/protyle/render/av/filter.ts +++ b/app/src/protyle/render/av/filter.ts @@ -61,6 +61,8 @@ export const setFilter = (options: { if (textElements.length > 0) { if (colData.type === "date") { cellValue = genCellValue(colData.type, { + isNotEmpty2: textElements[1].value !== "", + isNotEmpty: textElements[0].value !== "", content: new Date(textElements[0].value).getTime(), content2: new Date(textElements[1].value).getTime(), hasEndDate: operator === "Is between" @@ -219,11 +221,11 @@ export const setFilter = (options: { } else if (colData.type === "date") { menu.addItem({ iconHTML: "", - label: `` + label: `` }); menu.addItem({ iconHTML: "", - label: `` + label: `` }); } menu.addItem({ diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index 909f77a74..7548d0b08 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -91,10 +91,10 @@ style="width: ${column.width || "200px"}">${getCalcValue(column) || '${dayjs(cell.value.date.content2).format("YYYY-MM-DD HH:mm")}`; } text += ""; @@ -223,10 +223,10 @@ const genAVValueHTML = (value: IAVCellValue) => { }); break; case "date": - if (value.date.content) { + if (value.date.isNotEmpty) { html = `${dayjs(value.date.content).format("YYYY-MM-DD HH:mm")}`; } - if (value.date.hasEndDate && value.date.content && value.date.content2) { + if (value.date.hasEndDate && value.date.isNotEmpty2 && value.date.isNotEmpty) { html += `${dayjs(value.date.content2).format("YYYY-MM-DD HH:mm")}`; } break; @@ -285,6 +285,8 @@ class="fn__flex-1 fn__flex${["url", "text", "number"].includes(item.values[0].ty cellID: dateElement.dataset.id, value: { date: { + isNotEmpty: textElements[0].value !== "", + isNotEmpty2: textElements[1].value !== "", content: new Date(textElements[0].value).getTime(), content2: new Date(textElements[1].value).getTime(), hasEndDate @@ -292,10 +294,10 @@ class="fn__flex-1 fn__flex${["url", "text", "number"].includes(item.values[0].ty } }); let dataHTML = ""; - if (textElements[0].value) { + if (textElements[0].value !== "") { dataHTML = `${dayjs(textElements[0].value).format("YYYY-MM-DD HH:mm")}`; } - if (hasEndDate && textElements[0].value && textElements[1].value) { + if (hasEndDate && textElements[0].value !== "" && textElements[1].value !== "") { dataHTML += `${dayjs(textElements[1].value).format("YYYY-MM-DD HH:mm")}`; } dateElement.innerHTML = dataHTML; diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 4cc024237..c14f1062f 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -932,5 +932,13 @@ interface IAVCellValue { mSelect?: { content: string, color: string }[] block?: { content: string, id: string } url?: { content: string } - date?: { content?: number, content2?: number, hasEndDate?: boolean } + date?: IAVCellDateValue +} + +interface IAVCellDateValue { + content?: number, + isNotEmpty: boolean + content2?: number, + isNotEmpty2: boolean + hasEndDate?: boolean }