From 8b008b0b870395dda078d240c72819753d77b590 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:26 +0000 Subject: [PATCH 01/77] feat(nocodb): calendar datas service --- .../controllers/calendars-datas.controller.ts | 45 ++++ .../src/controllers/data-alias.controller.ts | 25 --- .../src/controllers/data-table.controller.ts | 1 - .../nocodb/src/modules/datas/datas.module.ts | 5 + packages/nocodb/src/schema/swagger.json | 199 +++++++++++++++++ .../src/services/calendar-datas.service.ts | 205 ++++++++++++++++++ packages/nocodb/src/services/datas.service.ts | 50 ----- .../src/services/public-datas.service.ts | 79 +------ 8 files changed, 456 insertions(+), 153 deletions(-) create mode 100644 packages/nocodb/src/controllers/calendars-datas.controller.ts create mode 100644 packages/nocodb/src/services/calendar-datas.service.ts diff --git a/packages/nocodb/src/controllers/calendars-datas.controller.ts b/packages/nocodb/src/controllers/calendars-datas.controller.ts new file mode 100644 index 0000000000..1dfb9c2e8c --- /dev/null +++ b/packages/nocodb/src/controllers/calendars-datas.controller.ts @@ -0,0 +1,45 @@ +import { Controller, Get, Param, Req, UseGuards } from '@nestjs/common'; +import { Request } from 'express'; +import { GlobalGuard } from '~/guards/global/global.guard'; +import { DataApiLimiterGuard } from '~/guards/data-api-limiter.guard'; +import { CalendarDatasService } from '~/services/calendar-datas.service'; +import Acl from '~/utils/acl'; + +@Controller() +@UseGuards(DataApiLimiterGuard, GlobalGuard) +export class CalendarDatasController { + constructor(private readonly calendarDatasService: CalendarDatasService) {} + + @Get(['/api/v1/db/calendar-data/:orgs/:baseName/:tableName/views/:viewName']) + @Acl('dataList') + async dataList(@Req() req: Request, @Param('viewName') viewId: string) { + return await this.calendarDatasService.getCalendarDataList({ + viewId: viewId, + query: req.query, + }); + } + + @Get([ + '/api/v1/db/calendar-data/:orgs/:baseName/:tableName/countByDate/', + '/api/v1/db/calendar-data/:orgs/:baseName/:tableName/views/:viewName/countByDate/', + ]) + @Acl('dataList') + async calendarDataCount( + @Req() req: Request, + @Res() res: Response, + @Param('baseName') baseName: string, + @Param('tableName') tableName: string, + @Param('viewName') viewName: string, + ) { + const startTime = process.hrtime(); + + const data = await this.calendarDatasService.getCalendarRecordCount({ + query: req.query, + viewId: viewName, + }); + + const elapsedSeconds = parseHrtimeToMilliSeconds(process.hrtime(startTime)); + res.setHeader('xc-db-response', elapsedSeconds); + res.json(data); + } +} diff --git a/packages/nocodb/src/controllers/data-alias.controller.ts b/packages/nocodb/src/controllers/data-alias.controller.ts index 0e53ab5f82..a1228605d1 100644 --- a/packages/nocodb/src/controllers/data-alias.controller.ts +++ b/packages/nocodb/src/controllers/data-alias.controller.ts @@ -45,7 +45,6 @@ export class DataAliasController { tableName: tableName, viewName: viewName, disableOptimization: opt === 'false', - ignorePagination: req.headers?.['xc-ignore-pagination'] === 'true', }); const elapsedMilliSeconds = parseHrtimeToMilliSeconds( process.hrtime(startTime), @@ -118,30 +117,6 @@ export class DataAliasController { res.json(countResult); } - @Get([ - '/api/v1/db/data/:orgs/:baseName/:tableName/countByDate/', - '/api/v1/db/data/:orgs/:baseName/:tableName/views/:viewName/countByDate/', - ]) - @Acl('dataList') - async calendarDataCount( - @Req() req: Request, - @Res() res: Response, - @Param('baseName') baseName: string, - @Param('tableName') tableName: string, - @Param('viewName') viewName: string, - ) { - const startTime = process.hrtime(); - - const data = await this.datasService.getCalendarRecordCount({ - query: req.query, - viewId: viewName, - }); - - const elapsedSeconds = parseHrtimeToMilliSeconds(process.hrtime(startTime)); - res.setHeader('xc-db-response', elapsedSeconds); - res.json(data); - } - @Post([ '/api/v1/db/data/:orgs/:baseName/:tableName', '/api/v1/db/data/:orgs/:baseName/:tableName/views/:viewName', diff --git a/packages/nocodb/src/controllers/data-table.controller.ts b/packages/nocodb/src/controllers/data-table.controller.ts index f0a2a251ed..04a8501661 100644 --- a/packages/nocodb/src/controllers/data-table.controller.ts +++ b/packages/nocodb/src/controllers/data-table.controller.ts @@ -38,7 +38,6 @@ export class DataTableController { query: req.query, modelId: modelId, viewId: viewId, - ignorePagination: req.headers?.['xc-ignore-pagination'] === 'true', }); const elapsedSeconds = parseHrtimeToMilliSeconds(process.hrtime(startTime)); res.setHeader('xc-db-response', elapsedSeconds); diff --git a/packages/nocodb/src/modules/datas/datas.module.ts b/packages/nocodb/src/modules/datas/datas.module.ts index 9059226da5..bb6eb86161 100644 --- a/packages/nocodb/src/modules/datas/datas.module.ts +++ b/packages/nocodb/src/modules/datas/datas.module.ts @@ -18,6 +18,8 @@ import { DataAliasNestedService } from '~/services/data-alias-nested.service'; import { OldDatasService } from '~/controllers/old-datas/old-datas.service'; import { PublicDatasExportService } from '~/services/public-datas-export.service'; import { PublicDatasService } from '~/services/public-datas.service'; +import { CalendarDatasController } from '~/controllers/calendars-datas.controller'; +import { CalendarDatasService } from '~/services/calendar-datas.service'; export const dataModuleMetadata = { imports: [ @@ -33,6 +35,7 @@ export const dataModuleMetadata = { ? [ DataTableController, DatasController, + CalendarDatasController, BulkDataAliasController, DataAliasController, DataAliasNestedController, @@ -48,6 +51,7 @@ export const dataModuleMetadata = { DatasService, BulkDataAliasService, DataAliasNestedService, + CalendarDatasService, OldDatasService, PublicDatasService, PublicDatasExportService, @@ -55,6 +59,7 @@ export const dataModuleMetadata = { exports: [ DatasService, BulkDataAliasService, + CalendarDatasService, DataAliasNestedService, OldDatasService, PublicDatasService, diff --git a/packages/nocodb/src/schema/swagger.json b/packages/nocodb/src/schema/swagger.json index 71f2920c9b..c3024bfff9 100644 --- a/packages/nocodb/src/schema/swagger.json +++ b/packages/nocodb/src/schema/swagger.json @@ -9716,6 +9716,205 @@ } } }, + "/api/v1/db/calendar-data/{orgs}/{baseName}/{tableName}/views/{viewName}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "orgs", + "in": "path", + "required": true, + "description": "Organisation Name. Currently `noco` will be used." + }, + { + "schema": { + "type": "string" + }, + "name": "baseName", + "in": "path", + "required": true, + "description": "Base Name" + }, + { + "schema": { + "type": "string" + }, + "name": "tableName", + "in": "path", + "required": true, + "description": "Table Name" + }, + { + "schema": { + "type": "string" + }, + "name": "viewName", + "in": "path", + "required": true + } + ], + "get": { + "summary": "List rows in Calendar View of a Table", + "operationId": "db-calendar-view-row-list", + "description": "List all rows in Calendar View of a Table", + "tags": [ + "DB Calendar View Row" + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "from_date", + "in": "query", + "required": true + }, + { + "schema": { + "type": "string" + }, + "name": "to_date", + "in": "query", + "required": true + }, + { + "schema": { + "type": "array" + }, + "in": "query", + "name": "fields" + }, + { + "schema": { + "type": "array" + }, + "in": "query", + "name": "sort" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "where" + }, + { + "schema": {}, + "in": "query", + "name": "nested", + "description": "Query params for nested data" + }, + { + "schema": { + "type": "number" + }, + "in": "query", + "name": "offset" + }, + { + "$ref": "#/components/parameters/xc-auth" + } + ] + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "list": { + "type": "array", + "x-stoplight": { + "id": "okd8utzm9xqet" + }, + "description": "List of calendar view rows", + "items": { + "x-stoplight": { + "id": "j758lsjv53o4q" + }, + "type": "object" + } + }, + "pageInfo": { + "$ref": "#/components/schemas/Paginated", + "x-stoplight": { + "id": "hylgqzgm8yhye" + }, + "description": "Paginated Info" + } + }, + "required": [ + "list", + "pageInfo" + ] + }, + "examples": { + "Example 1": { + "value": { + "list": [ + { + "Id": 1, + "Title": "baz", + "SingleSelect": null, + "Sheet-1 List": [ + { + "Id": 1, + "Title": "baz" + } + ], + "LTAR": [ + { + "Id": 1, + "Title": "baz" + } + ] + }, + { + "Id": 2, + "Title": "foo", + "SingleSelect": "a", + "Sheet-1 List": [ + { + "Id": 2, + "Title": "foo" + } + ], + "LTAR": [ + { + "Id": 2, + "Title": "foo" + } + ] + }, + { + "Id": 3, + "Title": "bar", + "SingleSelect": "b", + "Sheet-1 List": [], + "LTAR": [] + } + ], + "pageInfo": { + "totalRows": 3, + "page": 1, + "pageSize": 25, + "isFirstPage": true, + "isLastPage": true + } + } + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + } + } + }, "/api/v1/db/data/{orgs}/{baseName}/{tableName}/views/{viewName}": { "parameters": [ { diff --git a/packages/nocodb/src/services/calendar-datas.service.ts b/packages/nocodb/src/services/calendar-datas.service.ts new file mode 100644 index 0000000000..2ae6746f78 --- /dev/null +++ b/packages/nocodb/src/services/calendar-datas.service.ts @@ -0,0 +1,205 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { ViewTypes } from 'nocodb-sdk'; +import { nocoExecute } from 'nc-help'; +import dayjs from 'dayjs'; +import type { CalendarRangeType, FilterType } from 'nocodb-sdk'; +import { CalendarRange, Model, Source, View } from '~/models'; +import { NcBaseError, NcError } from '~/helpers/catchError'; +import getAst from '~/helpers/getAst'; +import { PagedResponseImpl } from '~/helpers/PagedResponse'; +import NcConnectionMgrv2 from '~/utils/common/NcConnectionMgrv2'; +import { DatasService } from '~/services/datas.service'; + +@Injectable() +export class CalendarDatasService { + protected logger = new Logger(CalendarDatasService.name); + + constructor(protected datasService: DatasService) {} + + async getCalendarDataList(param: { viewId: string; query: any }) { + const { viewId, query } = param; + const from_date = query.from_date; + const to_date = query.to_date; + + if (!from_date || !to_date) + NcError.badRequest('from_date and to_date are required'); + + const view = await View.get(viewId); + + if (!view) NcError.notFound('View not found'); + + if (view.type !== ViewTypes.CALENDAR) + NcError.badRequest('View is not a calendar view'); + + const calendarRange = await CalendarRange.read(view.id); + + if (!calendarRange?.ranges?.length) NcError.badRequest('No ranges found'); + + const filterArr = await this.buildFilterArr({ + viewId, + from_date, + to_date, + }); + + query.filterArr = [...(query.filterArr ? query.filterArr : []), filterArr]; + + const model = await Model.getByIdOrName({ + id: view.fk_model_id, + }); + + const source = await Source.get(model.source_id); + + const baseModel = await Model.getBaseModelSQL({ + id: model.id, + viewId: view?.id, + dbDriver: await NcConnectionMgrv2.get(source), + }); + + const { ast, dependencyFields } = await getAst({ + model, + query, + view, + }); + + const listArgs: any = dependencyFields; + try { + listArgs.filterArr = JSON.parse(listArgs.filterArrJson); + } catch (e) {} + try { + listArgs.sortArr = JSON.parse(listArgs.sortArrJson); + } catch (e) {} + + const [count, data] = await Promise.all([ + baseModel.count(listArgs, false), + (async () => { + let data = []; + try { + data = await nocoExecute( + ast, + await baseModel.list(listArgs, { + ignoreViewFilterAndSort: false, + }), + {}, + listArgs, + ); + } catch (e) { + if (e instanceof NcBaseError) throw e; + this.logger.error(e); + NcError.internalServerError( + 'Please check server log for more details', + ); + } + return data; + })(), + ]); + return new PagedResponseImpl(data, { + ...query, + count, + }); + } + + async getCalendarRecordCount(param: { viewId: string; query: any }) { + const { viewId, query } = param; + const from_date = query.from_date; + const to_date = query.to_date; + + if (!from_date || !to_date) + NcError.badRequest('from_date and to_date are required'); + + const view = await View.get(viewId); + + if (!view) NcError.notFound('View not found'); + + if (view.type !== ViewTypes.CALENDAR) + NcError.badRequest('View is not a calendar view'); + + const { ranges } = await CalendarRange.read(view.id); + + if (!ranges.length) NcError.badRequest('No ranges found'); + + const filterArr = await this.buildFilterArr({ + viewId, + from_date, + to_date, + }); + + query.filterArr = [...(query.filterArr ? query.filterArr : []), filterArr]; + + const model = await Model.getByIdOrName({ + id: view.fk_model_id, + }); + + const data = await this.datasService.getDataList({ + model, + view, + query, + }); + + if (!data) NcError.notFound('Data not found'); + + const dates: Array = []; + + ranges.forEach((range: CalendarRangeType) => { + const fromCol = model.columns.find( + (c) => c.id === range.fk_from_column_id, + )?.title; + + data.list.forEach((date) => { + const fromDt = dayjs(date[fromCol]); + + if (fromCol && fromDt.isValid()) { + dates.push(fromDt.format('YYYY-MM-DD HH:mm:ssZ')); + } + }); + }); + + return { + count: dates.length, + dates: Array.from(new Set(dates)), + }; + } + + async buildFilterArr({ + viewId, + from_date, + to_date, + }: { + viewId: string; + from_date: string; + to_date: string; + }) { + const calendarRange = await CalendarRange.read(viewId); + if (!calendarRange?.ranges?.length) NcError.badRequest('No ranges found'); + + const filterArr: FilterType = { + is_group: true, + logical_op: 'and', + children: [], + }; + + calendarRange.ranges.forEach((range: CalendarRange) => { + const fromColumn = range.fk_from_column_id; + let rangeFilter: any = []; + if (fromColumn) { + rangeFilter = [ + { + fk_column_id: fromColumn, + comparison_op: 'lt', + comparison_sub_op: 'exactDate', + value: to_date as string, + }, + { + fk_column_id: fromColumn, + comparison_op: 'gt', + comparison_sub_op: 'exactDate', + value: from_date as string, + }, + ]; + } + + if (rangeFilter.length > 0) filterArr.children.push(rangeFilter); + }); + + return filterArr; + } +} diff --git a/packages/nocodb/src/services/datas.service.ts b/packages/nocodb/src/services/datas.service.ts index 17f3c41de4..9ea930e76e 100644 --- a/packages/nocodb/src/services/datas.service.ts +++ b/packages/nocodb/src/services/datas.service.ts @@ -180,16 +180,6 @@ export class DatasService { listArgs.sortArr = JSON.parse(listArgs.sortArrJson); } catch (e) {} - let options = {}; - - if (view && view.type === ViewTypes.CALENDAR && param.ignorePagination) { - { - options = { - ignorePagination: true, - }; - } - } - const [count, data] = await Promise.all([ baseModel.count(listArgs, false, param.throwErrorIfInvalidParams), (async () => { @@ -200,7 +190,6 @@ export class DatasService { await baseModel.list(listArgs, { ignoreViewFilterAndSort, throwErrorIfInvalidParams: param.throwErrorIfInvalidParams, - ...options, }), {}, listArgs, @@ -1054,43 +1043,4 @@ export class DatasService { return column; } - - async getDataAggregateBy(param: { - viewId: string; - query?: any; - aggregateColumnName: string; - aggregateFunction: string; - groupByColumnName?: string; - ignoreFilters?: boolean; - sort?: { - column_name: string; - direction: 'asc' | 'desc'; - }; - }) { - const { viewId, query = {} } = param; - - const view = await View.get(viewId); - - const source = await Source.get(view.source_id); - - const baseModel = await Model.getBaseModelSQL({ - id: view.fk_model_id, - viewId: view?.id, - dbDriver: await NcConnectionMgrv2.get(source), - }); - - const data = await baseModel.groupByAndAggregate( - param.aggregateColumnName, - param.aggregateFunction, - { - groupByColumnName: param.groupByColumnName, - sortBy: param.sort, - ...query, - }, - ); - - return new PagedResponseImpl(data, { - ...query, - }); - } } diff --git a/packages/nocodb/src/services/public-datas.service.ts b/packages/nocodb/src/services/public-datas.service.ts index 4a3028cc92..abee2bcb0d 100644 --- a/packages/nocodb/src/services/public-datas.service.ts +++ b/packages/nocodb/src/services/public-datas.service.ts @@ -10,9 +10,8 @@ import { import slash from 'slash'; import { nocoExecute } from 'nc-help'; -import dayjs from 'dayjs'; import type { LinkToAnotherRecordColumn } from '~/models'; -import { CalendarRange, Column, Model, Source, View } from '~/models'; +import { Column, Model, Source, View } from '~/models'; import { NcError } from '~/helpers/catchError'; import getAst from '~/helpers/getAst'; import NcPluginMgrv2 from '~/helpers/NcPluginMgrv2'; @@ -80,17 +79,10 @@ export class PublicDatasService { let data = []; let count = 0; - let option = {}; - if (view && view.type === ViewTypes.CALENDAR) { - option = { - ignorePagination: true, - }; - } - try { data = await nocoExecute( ast, - await baseModel.list(listArgs, option), + await baseModel.list(listArgs), {}, listArgs, ); @@ -103,73 +95,6 @@ export class PublicDatasService { return new PagedResponseImpl(data, { ...param.query, count }); } - async getCalendarRecordCount(param: { - sharedViewUuid: string; - password?: string; - query: any; - }) { - const { sharedViewUuid, password, query = {} } = param; - const view = await View.getByUUID(sharedViewUuid); - - if (!view) NcError.notFound('Not found'); - - if (view.password && view.password !== password) { - return NcError.forbidden(ErrorMessages.INVALID_SHARED_VIEW_PASSWORD); - } - - if (view.type !== ViewTypes.CALENDAR) - NcError.badRequest('View is not a calendar view'); - - const calendarRange = await CalendarRange.read(view.id); - - if (!calendarRange?.ranges?.length) - NcError.notFound('Calendar ranges are required in a calendar view'); - - const model = await Model.getByIdOrName({ - id: view.fk_model_id, - }); - - const columns = await model.getColumns(); - - const data: any = await this.dataList({ - sharedViewUuid, - password, - query, - }); - - if (!data) NcError.notFound('Data not found'); - - const dates: Array = []; - - calendarRange.ranges.forEach((range: any) => { - data.list.forEach((date) => { - const from = - date[columns.find((c) => c.id === range.fk_from_column_id).title]; - - let to; - if (range.fk_to_column_id) { - to = date[columns.find((c) => c.id === range.fk_to_column_id).title]; - } - - if (from && to) { - const fromDt = dayjs(from); - const toDt = dayjs(to); - - let current = fromDt; - - while (current.isSameOrBefore(toDt)) { - dates.push(current.format('YYYY-MM-DD HH:mm:ssZ')); - current = current.add(1, 'day'); - } - } else if (from) { - dates.push(dayjs(from).format('YYYY-MM-DD HH:mm:ssZ')); - } - }); - }); - - return dates; - } - // todo: Handle the error case where view doesnt belong to model async groupedDataList(param: { sharedViewUuid: string; From b5df3431ae8321260e3b88b6985c5ed2ccdbbe17 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:26 +0000 Subject: [PATCH 02/77] fix(nocodb): build --- .../src/controllers/calendars-datas.controller.ts | 8 +++++--- .../src/controllers/public-datas.controller.ts | 15 --------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/packages/nocodb/src/controllers/calendars-datas.controller.ts b/packages/nocodb/src/controllers/calendars-datas.controller.ts index 1dfb9c2e8c..29a1be9a42 100644 --- a/packages/nocodb/src/controllers/calendars-datas.controller.ts +++ b/packages/nocodb/src/controllers/calendars-datas.controller.ts @@ -1,9 +1,11 @@ -import { Controller, Get, Param, Req, UseGuards } from '@nestjs/common'; -import { Request } from 'express'; +import { Controller, Get, Param, Req, Res, UseGuards } from '@nestjs/common'; +import { Request, Response } from 'express'; import { GlobalGuard } from '~/guards/global/global.guard'; import { DataApiLimiterGuard } from '~/guards/data-api-limiter.guard'; import { CalendarDatasService } from '~/services/calendar-datas.service'; -import Acl from '~/utils/acl'; +import { parseHrtimeToMilliSeconds } from '~/helpers'; + +import { Acl } from '~/middlewares/extract-ids/extract-ids.middleware'; @Controller() @UseGuards(DataApiLimiterGuard, GlobalGuard) diff --git a/packages/nocodb/src/controllers/public-datas.controller.ts b/packages/nocodb/src/controllers/public-datas.controller.ts index 94e4cba39e..187e8ecbdd 100644 --- a/packages/nocodb/src/controllers/public-datas.controller.ts +++ b/packages/nocodb/src/controllers/public-datas.controller.ts @@ -34,21 +34,6 @@ export class PublicDatasController { return pagedResponse; } - @Get([ - '/api/v1/db/public/shared-view/:sharedViewUuid/countByDate', - '/api/v2/public/shared-view/:sharedViewUuid/countByDate', - ]) - async countByDate( - @Req() req: Request, - @Param('sharedViewUuid') sharedViewUuid: string, - ) { - return await this.publicDatasService.getCalendarRecordCount({ - query: req.query, - password: req.headers?.['xc-password'] as string, - sharedViewUuid, - }); - } - @Get([ '/api/v1/db/public/shared-view/:sharedViewUuid/groupby', '/api/v2/public/shared-view/:sharedViewUuid/groupby', From 138b61b8bea9071c197abb049fec649c4c2e54a2 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:26 +0000 Subject: [PATCH 03/77] fix(nocodb): public data controller --- .../controllers/calendars-datas.controller.ts | 31 +- packages/nocodb/src/schema/swagger.json | 265 ++++++------------ .../src/services/calendar-datas.service.ts | 42 ++- 3 files changed, 164 insertions(+), 174 deletions(-) diff --git a/packages/nocodb/src/controllers/calendars-datas.controller.ts b/packages/nocodb/src/controllers/calendars-datas.controller.ts index 29a1be9a42..7231fd00dd 100644 --- a/packages/nocodb/src/controllers/calendars-datas.controller.ts +++ b/packages/nocodb/src/controllers/calendars-datas.controller.ts @@ -22,7 +22,6 @@ export class CalendarDatasController { } @Get([ - '/api/v1/db/calendar-data/:orgs/:baseName/:tableName/countByDate/', '/api/v1/db/calendar-data/:orgs/:baseName/:tableName/views/:viewName/countByDate/', ]) @Acl('dataList') @@ -44,4 +43,34 @@ export class CalendarDatasController { res.setHeader('xc-db-response', elapsedSeconds); res.json(data); } + + @Get([ + '/api/v1/db/public/calendar-view/:sharedViewUuid/countByDate', + '/api/v2/public/calendar-view/:sharedViewUuid/countByDate', + ]) + async countByDate( + @Req() req: Request, + @Param('sharedViewUuid') sharedViewUuid: string, + ) { + return await this.calendarDatasService.getPublicCalendarRecordCount({ + query: req.query, + password: req.headers?.['xc-password'] as string, + sharedViewUuid, + }); + } + + @Get([ + '/api/v1/db/public/calendar-view/:sharedViewUuid', + '/api/v2/public/calendar-view/:sharedViewUuid', + ]) + async getPublicCalendarDataList( + @Req() req: Request, + @Param('sharedViewUuid') sharedViewUuid: string, + ) { + return await this.calendarDatasService.getPublicCalendarDataList({ + query: req.query, + password: req.headers?.['xc-password'] as string, + sharedViewUuid, + }); + } } diff --git a/packages/nocodb/src/schema/swagger.json b/packages/nocodb/src/schema/swagger.json index c3024bfff9..34d7fb1fd2 100644 --- a/packages/nocodb/src/schema/swagger.json +++ b/packages/nocodb/src/schema/swagger.json @@ -9915,6 +9915,99 @@ } } }, + "/api/v1/db/public/calendar-view/{sharedViewUuid}/countByDate": { + "parameters": [ + { + "schema": { + "type": "string", + "example": "24a6d0bb-e45d-4b1a-bfef-f492d870de9f" + }, + "name": "sharedViewUuid", + "in": "path", + "required": true, + "description": "Shared View UUID" + }, + { + "schema": { + "type": "string" + }, + "in": "header", + "name": "xc-password", + "description": "Shared view password" + } + ], + "get": { + "summary": "Count of Records in Dates in Calendar View", + "operationId": "public-calendar-count", + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "from_date", + "in": "query", + "required": true + }, + { + "schema": { + "type": "string" + }, + "name": "to_date", + "in": "query", + "required": true + }, + { + "schema": { + "type": "array" + }, + "in": "query", + "name": "sort" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "where" + }, + { + "schema": { + "type": "integer", + "minimum": 1 + }, + "in": "query", + "name": "limit" + }, + { + "schema": { + "type": "integer", + "minimum": 0 + }, + "in": "query", + "name": "offset" + }, + { + "$ref": "#/components/parameters/xc-auth" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": {} + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + } + }, + "tags": [ + "Public" + ] + } + }, "/api/v1/db/data/{orgs}/{baseName}/{tableName}/views/{viewName}": { "parameters": [ { @@ -10253,101 +10346,6 @@ } } }, - "/api/v1/db/data/{orgs}/{baseName}/{tableName}/views/{viewName}/countByDate/" : { - "parameters": [ - { - "schema": { - "type": "string" - }, - "name": "orgs", - "in": "path", - "required": true, - "description": "Organisation Name. Currently `noco` will be used." - }, - { - "schema": { - "type": "string" - }, - "name": "baseName", - "in": "path", - "required": true, - "description": "Base Name" - }, - { - "schema": { - "type": "string" - }, - "name": "tableName", - "in": "path", - "required": true, - "description": "Table Name" - }, - { - "schema": { - "type": "string" - }, - "name": "viewName", - "in": "path", - "required": true - } - ], - "get": { - "summary": "Count of Records in Dates in Calendar View", - "operationId": "db-view-row-calendar-count", - "description": "Get the count of table view rows grouped by the dates", - "tags": [ - "DB View Row" - ], - "parameters": [ - { - "schema": { - "type": "array" - }, - "in": "query", - "name": "sort" - }, - { - "schema": { - "type": "string" - }, - "in": "query", - "name": "where" - }, - { - "schema": { - "type": "integer", - "minimum": 1 - }, - "in": "query", - "name": "limit" - }, - { - "schema": { - "type": "integer", - "minimum": 0 - }, - "in": "query", - "name": "offset" - }, - { - "$ref": "#/components/parameters/xc-auth" - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": {} - } - } - }, - "400": { - "$ref": "#/components/responses/BadRequest" - } - } - } - }, "/api/v1/db/data/{orgs}/{baseName}/{tableName}/views/{viewName}/groupby": { "parameters": [ { @@ -12317,83 +12315,6 @@ "description": "List Shared View Grouped Data" } }, - "/api/v1/db/public/shared-view/{sharedViewUuid}/countByDate": { - "parameters": [ - { - "schema": { - "type": "string", - "example": "24a6d0bb-e45d-4b1a-bfef-f492d870de9f" - }, - "name": "sharedViewUuid", - "in": "path", - "required": true, - "description": "Shared View UUID" - }, - { - "schema": { - "type": "string" - }, - "in": "header", - "name": "xc-password", - "description": "Shared view password" - } - ], - "get": { - "summary": "Count of Records in Dates in Calendar View", - "operationId": "public-calendar-count", - "parameters": [ - { - "schema": { - "type": "array" - }, - "in": "query", - "name": "sort" - }, - { - "schema": { - "type": "string" - }, - "in": "query", - "name": "where" - }, - { - "schema": { - "type": "integer", - "minimum": 1 - }, - "in": "query", - "name": "limit" - }, - { - "schema": { - "type": "integer", - "minimum": 0 - }, - "in": "query", - "name": "offset" - }, - { - "$ref": "#/components/parameters/xc-auth" - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": {} - } - } - }, - "400": { - "$ref": "#/components/responses/BadRequest" - } - }, - "tags": [ - "Public" - ] - } - }, "/api/v1/db/public/shared-view/{sharedViewUuid}/rows": { "parameters": [ { diff --git a/packages/nocodb/src/services/calendar-datas.service.ts b/packages/nocodb/src/services/calendar-datas.service.ts index 2ae6746f78..3d39978701 100644 --- a/packages/nocodb/src/services/calendar-datas.service.ts +++ b/packages/nocodb/src/services/calendar-datas.service.ts @@ -1,5 +1,5 @@ import { Injectable, Logger } from '@nestjs/common'; -import { ViewTypes } from 'nocodb-sdk'; +import { ErrorMessages, ViewTypes } from 'nocodb-sdk'; import { nocoExecute } from 'nc-help'; import dayjs from 'dayjs'; import type { CalendarRangeType, FilterType } from 'nocodb-sdk'; @@ -98,6 +98,46 @@ export class CalendarDatasService { }); } + async getPublicCalendarRecordCount(param: { + password: string; + query: any; + sharedViewUuid: string; + }) { + const { sharedViewUuid, password, query = {} } = param; + const view = await View.getByUUID(sharedViewUuid); + + if (!view) NcError.notFound('Not found'); + if (view.type !== ViewTypes.CALENDAR) { + NcError.notFound('Not found'); + } + + if (view.password && view.password !== password) { + return NcError.forbidden(ErrorMessages.INVALID_SHARED_VIEW_PASSWORD); + } + + return this.getCalendarRecordCount({ viewId: view.id, query }); + } + + async getPublicCalendarDataList(param: { + password: string; + query: any; + sharedViewUuid: string; + }) { + const { sharedViewUuid, password, query = {} } = param; + const view = await View.getByUUID(sharedViewUuid); + + if (!view) NcError.notFound('Not found'); + if (view.type !== ViewTypes.CALENDAR) { + NcError.notFound('Not found'); + } + + if (view.password && view.password !== password) { + return NcError.forbidden(ErrorMessages.INVALID_SHARED_VIEW_PASSWORD); + } + + return this.getCalendarDataList({ viewId: view.id, query }); + } + async getCalendarRecordCount(param: { viewId: string; query: any }) { const { viewId, query } = param; const from_date = query.from_date; From 8032b432b565414a8425781ab398fa813b0ed7cd Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:26 +0000 Subject: [PATCH 04/77] fix(nocodb): count-by-date api --- packages/nocodb/src/schema/swagger.json | 111 ++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/packages/nocodb/src/schema/swagger.json b/packages/nocodb/src/schema/swagger.json index 34d7fb1fd2..707cbc591b 100644 --- a/packages/nocodb/src/schema/swagger.json +++ b/packages/nocodb/src/schema/swagger.json @@ -9915,6 +9915,117 @@ } } }, + "/api/v1/db/calendar-data/{orgs}/{baseName}/{tableName}/views/{viewName}/countByDate/" : { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "orgs", + "in": "path", + "required": true, + "description": "Organisation Name. Currently `noco` will be used." + }, + { + "schema": { + "type": "string" + }, + "name": "baseName", + "in": "path", + "required": true, + "description": "Base Name" + }, + { + "schema": { + "type": "string" + }, + "name": "tableName", + "in": "path", + "required": true, + "description": "Table Name" + }, + { + "schema": { + "type": "string" + }, + "name": "viewName", + "in": "path", + "required": true + } + ], + "get": { + "summary": "Count of Records in Dates in Calendar View", + "operationId": "db-view-row-calendar-count", + "description": "Get the count of table view rows grouped by the dates", + "tags": [ + "DB View Row" + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "from_date", + "in": "query", + "required": true + }, + { + "schema": { + "type": "string" + }, + "name": "to_date", + "in": "query", + "required": true + }, + { + "schema": { + "type": "array" + }, + "in": "query", + "name": "sort" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "where" + }, + { + "schema": { + "type": "integer", + "minimum": 1 + }, + "in": "query", + "name": "limit" + }, + { + "schema": { + "type": "integer", + "minimum": 0 + }, + "in": "query", + "name": "offset" + }, + { + "$ref": "#/components/parameters/xc-auth" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": {} + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + } + } + } + }, "/api/v1/db/public/calendar-view/{sharedViewUuid}/countByDate": { "parameters": [ { From b616f1a5b2c729bf33bbf24e7a2e5347847ca23f Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:27 +0000 Subject: [PATCH 05/77] fix(nocodb): calendar public api --- packages/nocodb/src/schema/swagger.json | 182 ++++++++++++++++++++++++ 1 file changed, 182 insertions(+) diff --git a/packages/nocodb/src/schema/swagger.json b/packages/nocodb/src/schema/swagger.json index 707cbc591b..8d1808acd3 100644 --- a/packages/nocodb/src/schema/swagger.json +++ b/packages/nocodb/src/schema/swagger.json @@ -10026,6 +10026,188 @@ } } }, + "/api/v1/db/public/calendar-view/{sharedViewUuid}": { + "parameters": [ + { + "schema": { + "type": "string", + "example": "24a6d0bb-e45d-4b1a-bfef-f492d870de9f" + }, + "name": "sharedViewUuid", + "in": "path", + "required": true, + "description": "Shared View UUID" + }, + { + "schema": { + "type": "string" + }, + "in": "header", + "name": "xc-password", + "description": "Shared view password" + } + ], + "get": { + "summary": "List rows in Calendar View of a Table", + "operationId": "db-calendar-view-row-list", + "description": "List all rows in Calendar View of a Table", + "tags": [ + "DB Calendar View Row" + ], + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "from_date", + "in": "query", + "required": true + }, + { + "schema": { + "type": "string" + }, + "name": "to_date", + "in": "query", + "required": true + }, + { + "schema": { + "type": "array" + }, + "in": "query", + "name": "fields" + }, + { + "schema": { + "type": "array" + }, + "in": "query", + "name": "sort" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "where" + }, + { + "schema": {}, + "in": "query", + "name": "nested", + "description": "Query params for nested data" + }, + { + "schema": { + "type": "number" + }, + "in": "query", + "name": "offset" + }, + { + "$ref": "#/components/parameters/xc-auth" + } + ] + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "list": { + "type": "array", + "x-stoplight": { + "id": "okd8utzm9xqet" + }, + "description": "List of calendar view rows", + "items": { + "x-stoplight": { + "id": "j758lsjv53o4q" + }, + "type": "object" + } + }, + "pageInfo": { + "$ref": "#/components/schemas/Paginated", + "x-stoplight": { + "id": "hylgqzgm8yhye" + }, + "description": "Paginated Info" + } + }, + "required": [ + "list", + "pageInfo" + ] + }, + "examples": { + "Example 1": { + "value": { + "list": [ + { + "Id": 1, + "Title": "baz", + "SingleSelect": null, + "Sheet-1 List": [ + { + "Id": 1, + "Title": "baz" + } + ], + "LTAR": [ + { + "Id": 1, + "Title": "baz" + } + ] + }, + { + "Id": 2, + "Title": "foo", + "SingleSelect": "a", + "Sheet-1 List": [ + { + "Id": 2, + "Title": "foo" + } + ], + "LTAR": [ + { + "Id": 2, + "Title": "foo" + } + ] + }, + { + "Id": 3, + "Title": "bar", + "SingleSelect": "b", + "Sheet-1 List": [], + "LTAR": [] + } + ], + "pageInfo": { + "totalRows": 3, + "page": 1, + "pageSize": 25, + "isFirstPage": true, + "isLastPage": true + } + } + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + } + } + }, "/api/v1/db/public/calendar-view/{sharedViewUuid}/countByDate": { "parameters": [ { From 79a5de198e58a22301beda8f4f7afe9eb4075391 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:27 +0000 Subject: [PATCH 06/77] fix(nc-gui): wire new apis --- .../composables/useCalendarViewStore.ts | 241 +++++------------- packages/nc-gui/composables/useSharedView.ts | 71 ++++-- packages/nocodb/src/schema/swagger.json | 8 +- 3 files changed, 120 insertions(+), 200 deletions(-) diff --git a/packages/nc-gui/composables/useCalendarViewStore.ts b/packages/nc-gui/composables/useCalendarViewStore.ts index 432ba3554a..d5b04d648a 100644 --- a/packages/nc-gui/composables/useCalendarViewStore.ts +++ b/packages/nc-gui/composables/useCalendarViewStore.ts @@ -97,7 +97,7 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( const { sorts, nestedFilters } = useSmartsheetStoreOrThrow() - const { sharedView, fetchSharedViewData, fetchSharedViewActiveDate } = useSharedView() + const { sharedView, fetchSharedViewData, fetchSharedViewActiveDate, fetchSharedCalendarViewData } = useSharedView() const calendarMetaData = ref({}) @@ -219,7 +219,6 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( } fromDate = fromDate!.format('YYYY-MM-DD HH:mm:ssZ') - toDate = toDate!.format('YYYY-MM-DD HH:mm:ssZ') prevDate = prevDate!.format('YYYY-MM-DD HH:mm:ssZ') nextDate = nextDate!.format('YYYY-MM-DD HH:mm:ssZ') @@ -337,112 +336,6 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( } } - const filterJSON = computed(() => { - if (!calendarRange.value) return [] - const combinedFilters: any = { - is_group: true, - logical_op: 'and', - children: [], - } - - let prevDate: string | null | dayjs.Dayjs = null - let fromDate: dayjs.Dayjs | null | string = null - let toDate: dayjs.Dayjs | null | string = null - let nextDate: string | null | dayjs.Dayjs = null - - switch (activeCalendarView.value) { - case 'week': - fromDate = selectedDateRange.value.start.startOf('day') - toDate = selectedDateRange.value.end.endOf('day') - prevDate = selectedDateRange.value.start.subtract(1, 'day').endOf('day') - nextDate = selectedDateRange.value.end.add(1, 'day').startOf('day') - break - case 'month': { - const startOfMonth = selectedMonth.value.startOf('month') - const endOfMonth = selectedMonth.value.endOf('month') - - const daysToDisplay = Math.max(endOfMonth.diff(startOfMonth, 'day') + 1, 35) - fromDate = startOfMonth.subtract((startOfMonth.day() + 7) % 7, 'day') - toDate = fromDate.add(daysToDisplay, 'day') - prevDate = fromDate.subtract(1, 'day').endOf('day') - nextDate = toDate.add(1, 'day').startOf('day') - break - } - case 'year': - fromDate = selectedDate.value.startOf('year') - toDate = selectedDate.value.endOf('year') - prevDate = fromDate.subtract(1, 'day').endOf('day') - nextDate = toDate.add(1, 'day').startOf('day') - break - case 'day': - fromDate = selectedDate.value.startOf('day') - toDate = selectedDate.value.endOf('day') - prevDate = selectedDate.value.subtract(1, 'day').endOf('day') - nextDate = selectedDate.value.add(1, 'day').startOf('day') - break - } - - fromDate = fromDate!.format('YYYY-MM-DD HH:mm:ssZ') - toDate = toDate!.format('YYYY-MM-DD HH:mm:ssZ') - prevDate = prevDate!.format('YYYY-MM-DD HH:mm:ssZ') - nextDate = nextDate!.format('YYYY-MM-DD HH:mm:ssZ') - - calendarRange.value.forEach((range) => { - const fromCol = range.fk_from_col - const toCol = range.fk_to_col - let rangeFilter: any = [] - - if (fromCol && toCol) { - rangeFilter = [ - { - is_group: true, - logical_op: 'and', - children: [ - { - fk_column_id: fromCol.id, - comparison_op: 'lt', - comparison_sub_op: 'exactDate', - value: nextDate, - }, - { - fk_column_id: toCol.id, - comparison_op: 'gt', - comparison_sub_op: 'exactDate', - value: prevDate, - }, - ], - }, - { - fk_column_id: fromCol.id, - comparison_op: 'eq', - logical_op: 'or', - comparison_sub_op: 'exactDate', - value: fromDate, - }, - ] - } else if (fromCol) { - rangeFilter = [ - { - fk_column_id: fromCol.id, - comparison_op: 'lt', - comparison_sub_op: 'exactDate', - value: nextDate, - }, - { - fk_column_id: fromCol.id, - comparison_op: 'gt', - comparison_sub_op: 'exactDate', - value: prevDate, - }, - ] - } - if (rangeFilter.length > 0) { - combinedFilters.children.push(rangeFilter) - } - }) - return combinedFilters.children.length > 0 ? [combinedFilters] : [] - }) - const fetchActiveDates = async () => { if (!base?.value?.id || !meta.value?.id || !viewMeta.value?.id || !calendarRange.value) return let prevDate: dayjs.Dayjs | string | null = null @@ -459,85 +352,31 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( prevDate = fromDate.subtract(1, 'day').endOf('day') nextDate = toDate.add(1, 'day').startOf('day') } else if (activeCalendarView.value === 'year') { - fromDate = selectedDate.value.startOf('year') prevDate = selectedDate.value.startOf('year').subtract(1, 'day').endOf('day') nextDate = selectedDate.value.endOf('year').add(1, 'day').startOf('day') } prevDate = prevDate!.format('YYYY-MM-DD HH:mm:ssZ') nextDate = nextDate!.format('YYYY-MM-DD HH:mm:ssZ') - fromDate = fromDate!.format('YYYY-MM-DD HH:mm:ssZ') const activeDateFilter: Array = [] - calendarRange.value.forEach((range) => { - const fromCol = range.fk_from_col - const toCol = range.fk_to_col - let rangeFilter: any = [] - - if (fromCol && toCol) { - rangeFilter = [ - { - is_group: true, - logical_op: 'and', - children: [ - { - fk_column_id: fromCol.id, - comparison_op: 'lt', - comparison_sub_op: 'exactDate', - value: nextDate, - }, - { - fk_column_id: toCol.id, - comparison_op: 'gt', - comparison_sub_op: 'exactDate', - value: prevDate, - }, - ], - }, - { - fk_column_id: fromCol.id, - comparison_op: 'eq', - logical_op: 'or', - comparison_sub_op: 'exactDate', - value: fromDate, - }, - ] - } else if (fromCol) { - rangeFilter = [ - { - fk_column_id: fromCol.id, - comparison_op: 'lt', - comparison_sub_op: 'exactDate', - value: nextDate, - }, - { - fk_column_id: fromCol.id, - comparison_op: 'gt', - comparison_sub_op: 'exactDate', - value: prevDate, - }, - ] - } - - activeDateFilter.push(rangeFilter) - }) - if (!base?.value?.id || !meta.value?.id || !viewMeta.value?.id) return try { const res = !isPublic.value - ? await api.dbViewRow.calendarCount('noco', base.value.id!, meta.value!.id!, viewMeta.value.id, { + ? await api.dbCalendarViewRowCount.dbCalendarViewRowCount('noco', base.value.id!, meta.value!.id!, viewMeta.value.id, { ...queryParams.value, - ...{}, - ...{}, - ...{ filterArrJson: JSON.stringify([...activeDateFilter]) }, + from_date: prevDate, + to_date: nextDate, }) : await fetchSharedViewActiveDate({ + from_date: prevDate, + to_date: nextDate, sortsArr: sorts.value, filtersArr: activeDateFilter, }) - activeDates.value = res.map((dateObj: unknown) => dayjs(dateObj)) + activeDates.value = res.dates.map((dateObj: unknown) => dayjs(dateObj)) } catch (e) { activeDates.value = [] message.error(`${t('msg.error.fetchingActiveDates')} ${await extractSdkResponseErrorMsg(e)}`) @@ -585,30 +424,74 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( } async function loadCalendarData() { - if ((!base?.value?.id || !meta.value?.id || !viewMeta.value?.id || !filterJSON.value) && !isPublic?.value) return + if ((!base?.value?.id || !meta.value?.id || !viewMeta.value?.id) && !isPublic?.value) return + + let prevDate: string | null | dayjs.Dayjs = null + let fromDate: dayjs.Dayjs | null | string = null + let toDate: dayjs.Dayjs | null | string = null + let nextDate: string | null | dayjs.Dayjs = null + + switch (activeCalendarView.value) { + case 'week': + fromDate = selectedDateRange.value.start.startOf('day') + toDate = selectedDateRange.value.end.endOf('day') + prevDate = selectedDateRange.value.start.subtract(1, 'day').endOf('day') + nextDate = selectedDateRange.value.end.add(1, 'day').startOf('day') + break + case 'month': { + const startOfMonth = selectedMonth.value.startOf('month') + const endOfMonth = selectedMonth.value.endOf('month') + + const daysToDisplay = Math.max(endOfMonth.diff(startOfMonth, 'day') + 1, 35) + fromDate = startOfMonth.subtract((startOfMonth.day() + 7) % 7, 'day') + toDate = fromDate.add(daysToDisplay, 'day') + prevDate = fromDate.subtract(1, 'day').endOf('day') + nextDate = toDate.add(1, 'day').startOf('day') + break + } + case 'year': + fromDate = selectedDate.value.startOf('year') + toDate = selectedDate.value.endOf('year') + prevDate = fromDate.subtract(1, 'day').endOf('day') + nextDate = toDate.add(1, 'day').startOf('day') + break + case 'day': + fromDate = selectedDate.value.startOf('day') + toDate = selectedDate.value.endOf('day') + prevDate = selectedDate.value.subtract(1, 'day').endOf('day') + nextDate = selectedDate.value.add(1, 'day').startOf('day') + break + } + prevDate = prevDate!.format('YYYY-MM-DD HH:mm:ssZ') + nextDate = nextDate!.format('YYYY-MM-DD HH:mm:ssZ') + try { isCalendarDataLoading.value = true const res = !isPublic.value - ? await api.dbViewRow.list( + ? await api.dbCalendarViewRow.list( 'noco', base.value.id!, meta.value!.id!, viewMeta.value!.id!, { - ...queryParams.value, - ...(isUIAllowed('filterSync') - ? { filterArrJson: JSON.stringify([...filterJSON.value]) } - : { filterArrJson: JSON.stringify([nestedFilters.value, ...filterJSON.value]) }), - where: where?.value ?? '', + from_date: prevDate, + to_date: nextDate, }, { - headers: { - 'xc-ignore-pagination': true, - }, + ...queryParams.value, + ...(isUIAllowed('filterSync') ? { filterArrJson: [] } : { filterArrJson: JSON.stringify([nestedFilters.value]) }), + where: where?.value ?? '', + filterArrJson: JSON.stringify([...nestedFilters.value]), }, ) - : await fetchSharedViewData({ sortsArr: sorts.value, filtersArr: filterJSON.value }) + : await fetchSharedCalendarViewData({ + sortsArr: sorts.value, + from_date: prevDate, + to_date: nextDate, + filtersArr: nestedFilters.value, + where: where?.value ?? '', + }) formattedData.value = formatData(res!.list) } catch (e) { message.error(`${t('msg.error.fetchingCalendarData')} ${await extractSdkResponseErrorMsg(e)}`) diff --git a/packages/nc-gui/composables/useSharedView.ts b/packages/nc-gui/composables/useSharedView.ts index a460760d1e..d7da18fb1c 100644 --- a/packages/nc-gui/composables/useSharedView.ts +++ b/packages/nc-gui/composables/useSharedView.ts @@ -110,21 +110,16 @@ export function useSharedView() { } } - const fetchSharedViewData = async ( - param: { - sortsArr: SortType[] - filtersArr: FilterType[] - fields?: any[] - sort?: any[] - where?: string - /** Query params for nested data */ - nested?: any - offset?: number - }, - headers?: { - ignorePagination?: boolean - }, - ) => { + const fetchSharedViewData = async (param: { + sortsArr: SortType[] + filtersArr: FilterType[] + fields?: any[] + sort?: any[] + where?: string + /** Query params for nested data */ + nested?: any + offset?: number + }) => { if (!sharedView.value) return { list: [], @@ -148,13 +143,54 @@ export function useSharedView() { { headers: { 'xc-password': password.value, - 'xc-ignore-pagination': headers?.ignorePagination ? 'true' : 'false', + }, + }, + ) + } + + const fetchSharedCalendarViewData = async (param: { + from_date: string + to_date: string + sortsArr: SortType[] + filtersArr: FilterType[] + fields?: any[] + sort?: any[] + where?: string + /** Query params for nested data */ + nested?: any + offset?: number + }) => { + if (!sharedView.value) + return { + list: [], + pageInfo: {}, + } + + if (!param.offset) { + const page = paginationData.value.page || 1 + const pageSize = paginationData.value.pageSize || appInfoDefaultLimit + param.offset = (page - 1) * pageSize + } + + return await $api.dbCalendarViewRow.publicDataCalendarRowList( + sharedView.value.uuid!, + { + limit: sharedView.value?.type === ViewTypes.MAP ? 1000 : undefined, + ...param, + filterArrJson: JSON.stringify(param.filtersArr ?? nestedFilters.value), + sortArrJson: JSON.stringify(param.sortsArr ?? sorts.value), + } as any, + { + headers: { + 'xc-password': password.value, }, }, ) } const fetchSharedViewActiveDate = async (param: { + from_date: string + to_date: string sortsArr: SortType[] filtersArr: FilterType[] sort?: any[] @@ -166,7 +202,7 @@ export function useSharedView() { pageInfo: {}, } - return await $api.public.calendarCount( + return await $api.public.dataCalendarRowCount( sharedView.value.uuid!, { ...param, @@ -234,6 +270,7 @@ export function useSharedView() { nestedFilters, fetchSharedViewData, fetchSharedViewActiveDate, + fetchSharedCalendarViewData, fetchSharedViewGroupedData, paginationData, sorts, diff --git a/packages/nocodb/src/schema/swagger.json b/packages/nocodb/src/schema/swagger.json index 8d1808acd3..9aa44a6676 100644 --- a/packages/nocodb/src/schema/swagger.json +++ b/packages/nocodb/src/schema/swagger.json @@ -9955,10 +9955,10 @@ ], "get": { "summary": "Count of Records in Dates in Calendar View", - "operationId": "db-view-row-calendar-count", + "operationId": "db-calendar-view-row-count", "description": "Get the count of table view rows grouped by the dates", "tags": [ - "DB View Row" + "DB Calendar View Row Count" ], "parameters": [ { @@ -10049,7 +10049,7 @@ ], "get": { "summary": "List rows in Calendar View of a Table", - "operationId": "db-calendar-view-row-list", + "operationId": "public-data-calendar-row-list", "description": "List all rows in Calendar View of a Table", "tags": [ "DB Calendar View Row" @@ -10231,7 +10231,7 @@ ], "get": { "summary": "Count of Records in Dates in Calendar View", - "operationId": "public-calendar-count", + "operationId": "public-data-calendar-row-count", "parameters": [ { "schema": { From 05d15024062a57b6aea32b8a7f8f1ab24fddc7a7 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:27 +0000 Subject: [PATCH 07/77] fix(nc-gui): wire new apis --- packages/nc-gui/components/smartsheet/calendar/index.vue | 1 - packages/nc-gui/composables/useExpandedFormStore.ts | 8 ++++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/calendar/index.vue b/packages/nc-gui/components/smartsheet/calendar/index.vue index f36d3227fa..6051eaa03a 100644 --- a/packages/nc-gui/components/smartsheet/calendar/index.vue +++ b/packages/nc-gui/components/smartsheet/calendar/index.vue @@ -86,7 +86,6 @@ const expandedFormRowState = ref>() const expandRecord = (row: RowType, state?: Record) => { const rowId = extractPkFromRow(row.row, meta.value!.columns!) - if (rowId) { router.push({ query: { diff --git a/packages/nc-gui/composables/useExpandedFormStore.ts b/packages/nc-gui/composables/useExpandedFormStore.ts index db848d4ac3..43236a7743 100644 --- a/packages/nc-gui/composables/useExpandedFormStore.ts +++ b/packages/nc-gui/composables/useExpandedFormStore.ts @@ -1,9 +1,11 @@ -import { UITypes, ViewTypes, isVirtualCol } from 'nocodb-sdk' import type { AuditType, ColumnType, TableType } from 'nocodb-sdk' +import { UITypes, ViewTypes, isVirtualCol } from 'nocodb-sdk' import type { Ref } from 'vue' import dayjs from 'dayjs' import { + IsPublicInj, NOCO, + type Row, computed, extractPkFromRow, extractSdkResponseErrorMsg, @@ -22,7 +24,6 @@ import { useSharedView, useUndoRedo, } from '#imports' -import type { Row } from '#imports' const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((meta: Ref, _row: Ref) => { const { $e, $state, $api } = useNuxtApp() @@ -31,6 +32,8 @@ const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((m const { t } = useI18n() + const isPublic = inject(IsPublicInj, ref(false)) + const commentsOnly = ref(false) const commentsAndLogs = ref([]) @@ -301,6 +304,7 @@ const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((m } const loadRow = async (rowId?: string, onlyVirtual = false) => { + if (isPublic.value) return let record = await $api.dbTableRow.read( NOCO, // todo: base_id missing on view type From f0a2f4a660dd7da3289fad214d2867b75704d1bd Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:28 +0000 Subject: [PATCH 08/77] fix(nc-gui): pagination --- packages/nc-gui/composables/useSharedView.ts | 2 +- packages/nocodb/src/services/calendar-datas.service.ts | 1 + packages/nocodb/src/services/datas.service.ts | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/composables/useSharedView.ts b/packages/nc-gui/composables/useSharedView.ts index d7da18fb1c..c80ceabbfb 100644 --- a/packages/nc-gui/composables/useSharedView.ts +++ b/packages/nc-gui/composables/useSharedView.ts @@ -175,7 +175,7 @@ export function useSharedView() { return await $api.dbCalendarViewRow.publicDataCalendarRowList( sharedView.value.uuid!, { - limit: sharedView.value?.type === ViewTypes.MAP ? 1000 : undefined, + limit: sharedView.value?.type === ViewTypes.CALENDAR ? 3000 : undefined, ...param, filterArrJson: JSON.stringify(param.filtersArr ?? nestedFilters.value), sortArrJson: JSON.stringify(param.sortsArr ?? sorts.value), diff --git a/packages/nocodb/src/services/calendar-datas.service.ts b/packages/nocodb/src/services/calendar-datas.service.ts index 3d39978701..310eec31bd 100644 --- a/packages/nocodb/src/services/calendar-datas.service.ts +++ b/packages/nocodb/src/services/calendar-datas.service.ts @@ -173,6 +173,7 @@ export class CalendarDatasService { model, view, query, + ignorePagination: true, }); if (!data) NcError.notFound('Data not found'); diff --git a/packages/nocodb/src/services/datas.service.ts b/packages/nocodb/src/services/datas.service.ts index 9ea930e76e..8df03f60d5 100644 --- a/packages/nocodb/src/services/datas.service.ts +++ b/packages/nocodb/src/services/datas.service.ts @@ -190,6 +190,7 @@ export class DatasService { await baseModel.list(listArgs, { ignoreViewFilterAndSort, throwErrorIfInvalidParams: param.throwErrorIfInvalidParams, + ignorePagination: param.ignorePagination, }), {}, listArgs, From 0f7a0201e34361d33a10436faa37e50b82ac4ea7 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:28 +0000 Subject: [PATCH 09/77] fix(nc-gui): optimize data fetching --- .../composables/useCalendarViewStore.ts | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/packages/nc-gui/composables/useCalendarViewStore.ts b/packages/nc-gui/composables/useCalendarViewStore.ts index d5b04d648a..e43efd27c9 100644 --- a/packages/nc-gui/composables/useCalendarViewStore.ts +++ b/packages/nc-gui/composables/useCalendarViewStore.ts @@ -377,6 +377,12 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( filtersArr: activeDateFilter, }) activeDates.value = res.dates.map((dateObj: unknown) => dayjs(dateObj)) + + if (res.count > 3000 && activeCalendarView.value !== 'year') { + message.warning( + 'This current date range has more than 3000 records. Some records may not be displayed. To get complete records, contact support', + ) + } } catch (e) { activeDates.value = [] message.error(`${t('msg.error.fetchingActiveDates')} ${await extractSdkResponseErrorMsg(e)}`) @@ -665,17 +671,21 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( watch(selectedDate, async (value, oldValue) => { if (activeCalendarView.value === 'month' || activeCalendarView.value === 'week') { - if (sideBarFilterOption.value === 'selectedDate') { + if (sideBarFilterOption.value === 'selectedDate' && showSideMenu.value) { await loadSidebarData() } } else if (activeCalendarView.value === 'year') { if (value.year() !== oldValue.year()) { await Promise.all([loadCalendarData(), loadSidebarData(), await fetchActiveDates()]) - } else if (sideBarFilterOption.value === 'selectedDate') { + } else if (sideBarFilterOption.value === 'selectedDate' && showSideMenu.value) { await loadSidebarData() } } else { - await Promise.all([loadSidebarData(), loadCalendarData()]) + if (showSideMenu.value) { + await Promise.all([loadSidebarData(), loadCalendarData()]) + } else { + await Promise.all([loadCalendarData()]) + } } if (activeCalendarView.value === 'year' && value.year() !== oldValue.year()) { @@ -684,7 +694,7 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( }) watch(selectedTime, async () => { - if (calDataType.value !== UITypes.Date) { + if (calDataType.value !== UITypes.Date && showSideMenu.value) { await loadSidebarData() } }) @@ -733,7 +743,15 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( } } sideBarFilterOption.value = activeCalendarView.value ?? 'allRecords' - await Promise.all([loadCalendarData(), loadSidebarData(), fetchActiveDates()]) + if (activeCalendarView.value === 'year') { + await Promise.all([loadSidebarData(), fetchActiveDates()]) + } else { + await Promise.all([loadCalendarData(), loadSidebarData(), fetchActiveDates()]) + } + }) + + watch(showSideMenu, async (val) => { + if (val) await loadSidebarData() }) watch(sideBarFilterOption, async () => { From 63c5ec46e71851a985facc66cd29d4bdc438c419 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:28 +0000 Subject: [PATCH 10/77] fix(nc-gui): skip pagination for data-opts service --- .../src/services/calendar-datas.service.ts | 59 ++--------------- packages/nocodb/src/services/datas.service.ts | 66 +------------------ 2 files changed, 8 insertions(+), 117 deletions(-) diff --git a/packages/nocodb/src/services/calendar-datas.service.ts b/packages/nocodb/src/services/calendar-datas.service.ts index 310eec31bd..b8028e7a84 100644 --- a/packages/nocodb/src/services/calendar-datas.service.ts +++ b/packages/nocodb/src/services/calendar-datas.service.ts @@ -1,13 +1,9 @@ import { Injectable, Logger } from '@nestjs/common'; import { ErrorMessages, ViewTypes } from 'nocodb-sdk'; -import { nocoExecute } from 'nc-help'; import dayjs from 'dayjs'; import type { CalendarRangeType, FilterType } from 'nocodb-sdk'; -import { CalendarRange, Model, Source, View } from '~/models'; -import { NcBaseError, NcError } from '~/helpers/catchError'; -import getAst from '~/helpers/getAst'; -import { PagedResponseImpl } from '~/helpers/PagedResponse'; -import NcConnectionMgrv2 from '~/utils/common/NcConnectionMgrv2'; +import { CalendarRange, Model, View } from '~/models'; +import { NcError } from '~/helpers/catchError'; import { DatasService } from '~/services/datas.service'; @Injectable() @@ -47,54 +43,11 @@ export class CalendarDatasService { id: view.fk_model_id, }); - const source = await Source.get(model.source_id); - - const baseModel = await Model.getBaseModelSQL({ - id: model.id, - viewId: view?.id, - dbDriver: await NcConnectionMgrv2.get(source), - }); - - const { ast, dependencyFields } = await getAst({ - model, - query, - view, - }); - - const listArgs: any = dependencyFields; - try { - listArgs.filterArr = JSON.parse(listArgs.filterArrJson); - } catch (e) {} - try { - listArgs.sortArr = JSON.parse(listArgs.sortArrJson); - } catch (e) {} - - const [count, data] = await Promise.all([ - baseModel.count(listArgs, false), - (async () => { - let data = []; - try { - data = await nocoExecute( - ast, - await baseModel.list(listArgs, { - ignoreViewFilterAndSort: false, - }), - {}, - listArgs, - ); - } catch (e) { - if (e instanceof NcBaseError) throw e; - this.logger.error(e); - NcError.internalServerError( - 'Please check server log for more details', - ); - } - return data; - })(), - ]); - return new PagedResponseImpl(data, { + return await this.datasService.dataList({ + ...param, ...query, - count, + baseName: model.base_id, + tableName: model.id, }); } diff --git a/packages/nocodb/src/services/datas.service.ts b/packages/nocodb/src/services/datas.service.ts index 8df03f60d5..89b31f2dc6 100644 --- a/packages/nocodb/src/services/datas.service.ts +++ b/packages/nocodb/src/services/datas.service.ts @@ -1,13 +1,12 @@ import { Injectable, Logger } from '@nestjs/common'; -import { isSystemColumn, ViewTypes } from 'nocodb-sdk'; +import { isSystemColumn } from 'nocodb-sdk'; import * as XLSX from 'xlsx'; import papaparse from 'papaparse'; import { nocoExecute } from 'nc-help'; -import dayjs from 'dayjs'; import type { BaseModelSqlv2 } from '~/db/BaseModelSqlv2'; import type { PathParams } from '~/modules/datas/helpers'; import { getDbRows, getViewAndModelByAliasOrId } from '~/modules/datas/helpers'; -import { Base, CalendarRange, Column, Model, Source, View } from '~/models'; +import { Base, Column, Model, Source, View } from '~/models'; import { NcBaseError, NcError } from '~/helpers/catchError'; import getAst from '~/helpers/getAst'; import { PagedResponseImpl } from '~/helpers/PagedResponse'; @@ -211,67 +210,6 @@ export class DatasService { }); } - async getCalendarRecordCount(param: { viewId: string; query: any }) { - const { viewId, query = {} } = param; - - const view = await View.get(viewId); - - if (!view) NcError.notFound('View not found'); - if (view.type !== ViewTypes.CALENDAR) - NcError.badRequest('View is not a calendar view'); - - const calendarRange = await CalendarRange.read(view.id); - - if (!calendarRange?.ranges?.length) NcError.badRequest('No ranges found'); - - const model = await Model.getByIdOrName({ - id: view.fk_model_id, - }); - - const data = await this.getDataList({ - model, - view, - query, - }); - - if (!data) NcError.notFound('Data not found'); - - const dates: Array = []; - - calendarRange.ranges.forEach((range: any) => { - data.list.forEach((date) => { - const from = - date[ - model.columns.find((c) => c.id === range.fk_from_column_id).title - ]; - - let to; - if (range.fk_to_column_id) { - to = - date[ - model.columns.find((c) => c.id === range.fk_to_column_id).title - ]; - } - - if (from && to) { - const fromDt = dayjs(from); - const toDt = dayjs(to); - - let current = fromDt; - - while (current.isSameOrBefore(toDt)) { - dates.push(current.format('YYYY-MM-DD HH:mm:ssZ')); - current = current.add(1, 'day'); - } - } else if (from) { - dates.push(dayjs(from).format('YYYY-MM-DD HH:mm:ssZ')); - } - }); - }); - - return dates; - } - async getFindOne(param: { model: Model; view: View; query: any }) { const { model, view, query = {} } = param; From 2ba9321690e21c67dd249fcfd0d9f773a2d83a7c Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:29 +0000 Subject: [PATCH 11/77] fix(nc-gui): apply filter before fetch all records --- .../nocodb/src/services/calendar-datas.service.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/nocodb/src/services/calendar-datas.service.ts b/packages/nocodb/src/services/calendar-datas.service.ts index b8028e7a84..31822e0360 100644 --- a/packages/nocodb/src/services/calendar-datas.service.ts +++ b/packages/nocodb/src/services/calendar-datas.service.ts @@ -122,10 +122,10 @@ export class CalendarDatasService { id: view.fk_model_id, }); - const data = await this.datasService.getDataList({ - model, - view, - query, + const data = await this.datasService.dataList({ + ...param, + baseName: model.base_id, + tableName: model.id, ignorePagination: true, }); @@ -133,8 +133,10 @@ export class CalendarDatasService { const dates: Array = []; + const columns = await model.getColumns(); + ranges.forEach((range: CalendarRangeType) => { - const fromCol = model.columns.find( + const fromCol = columns.find( (c) => c.id === range.fk_from_column_id, )?.title; From 36751960b7bac7661c55a3e52797b1128caacf6f Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:29 +0000 Subject: [PATCH 12/77] fix(nocodb): updated v2 calendar apis --- packages/nocodb/src/schema/swagger-v2.json | 176 ++++++++++++++++++++- 1 file changed, 175 insertions(+), 1 deletion(-) diff --git a/packages/nocodb/src/schema/swagger-v2.json b/packages/nocodb/src/schema/swagger-v2.json index 47740de402..83f3087331 100644 --- a/packages/nocodb/src/schema/swagger-v2.json +++ b/packages/nocodb/src/schema/swagger-v2.json @@ -7273,7 +7273,7 @@ "description": "List Shared View Grouped Data" } }, - "/api/v2/public/shared-view/{sharedViewUuid}/countByDate": { + "/api/v2/public/calendar-view/{sharedViewUuid}/countByDate": { "parameters": [ { "schema": { @@ -7350,6 +7350,180 @@ ] } }, + "/api/v2/public/calendar-view/{sharedViewUuid}/": { + "parameters": [ + { + "schema": { + "type": "string", + "example": "24a6d0bb-e45d-4b1a-bfef-f492d870de9f" + }, + "name": "sharedViewUuid", + "in": "path", + "required": true, + "description": "Shared View UUID" + }, + { + "schema": { + "type": "string" + }, + "in": "header", + "name": "xc-password", + "description": "Shared view password" + } + ], + "get": { + "summary": "List Shared View Rows", + "operationId": "public-calendar-data-list", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SharedViewList" + }, + "examples": { + "Example 1": { + "value": { + "list": [ + { + "source_id": "ds_g4ccx6e77h1dmi", + "created_at": "2023-03-02 17:46:31", + "fk_model_id": "md_mhs9z4r2ak98x0", + "id": "vw_lg052cnc1c26kf", + "is_default": 1, + "lock_type": "collaborative", + "meta": {}, + "order": 1, + "password": null, + "base_id": "p_xm3thidrblw4n7", + "show": 1, + "show_system_fields": null, + "title": "Sheet-1", + "type": 3, + "updated_at": "2023-03-02 17:46:31", + "uuid": null, + "view": { + "source_id": "ds_g4ccx6e77h1dmi", + "created_at": "2023-03-02 17:46:31", + "fk_view_id": "vw_lg052cnc1c26kf", + "meta": null, + "base_id": "p_xm3thidrblw4n7", + "row_height": null, + "updated_at": "2023-03-02 17:46:31", + "uuid": null + } + } + ], + "pageInfo": { + "isFirstPage": true, + "isLastPage": true, + "page": 1, + "pageSize": 10, + "totalRows": 1 + } + } + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + } + }, + "tags": [ + "Public" + ], + "parameters": [ + { + "schema": { + "type": "array" + }, + "in": "query", + "name": "fields", + "description": "Which fields to be shown" + }, + { + "schema": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "in": "query", + "name": "sort", + "description": "The result will be sorted based on `sort` query" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "from_date", + "description": "From Date" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "to_date", + "description": "To Date" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "where", + "description": "Extra filtering" + }, + { + "schema": { + "type": "integer", + "minimum": 0 + }, + "in": "query", + "name": "offset", + "description": "Offset in rows" + }, + { + "schema": { + "type": "integer", + "minimum": 1 + }, + "in": "query", + "name": "limit", + "description": "Limit in rows" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "sortArrJson", + "description": "Used for multiple sort queries" + }, + { + "schema": { + "type": "string" + }, + "in": "query", + "name": "filterArrJson", + "description": "Used for multiple filter queries" + } + ], + "description": "List all shared view rows" + }, + }, "/api/v2/public/shared-view/{sharedViewUuid}/rows": { "parameters": [ { From b104362ed2ce8fe9230ac76f8899b2678f81032e Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:29 +0000 Subject: [PATCH 13/77] fix(nocodb): make pagination limit of 3000 --- packages/nocodb/src/db/BaseModelSqlv2.ts | 12 +++++++++++- .../nocodb/src/services/calendar-datas.service.ts | 1 + packages/nocodb/src/services/datas.service.ts | 4 ++++ .../nocodb/tests/unit/rest/tests/viewRow.test.ts | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 586882ec0c..7172f1aac9 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -318,12 +318,14 @@ class BaseModelSqlv2 { sortArr?: Sort[]; sort?: string | string[]; fieldsSet?: Set; + calendarLimitOverride?: number; } = {}, options: { ignoreViewFilterAndSort?: boolean; ignorePagination?: boolean; validateFormula?: boolean; throwErrorIfInvalidParams?: boolean; + calendarLimitOverride?: number; } = {}, ): Promise { const { @@ -331,6 +333,7 @@ class BaseModelSqlv2 { ignorePagination = false, validateFormula = false, throwErrorIfInvalidParams = false, + calendarLimitOverride, } = options; const { where, fields, ...rest } = this._getListArgs(args as any); @@ -426,7 +429,14 @@ class BaseModelSqlv2 { if (createdCol) qb.orderBy(createdCol.column_name); } - if (!ignorePagination) applyPaginate(qb, rest); + // For calendar View, if calendarLimitOverride is provided, use it as limit for the query + if (!ignorePagination) { + if (!calendarLimitOverride) { + applyPaginate(qb, rest); + } else { + applyPaginate(qb, { limit: calendarLimitOverride, ...rest }); + } + } const proto = await this.getProto(); let data; diff --git a/packages/nocodb/src/services/calendar-datas.service.ts b/packages/nocodb/src/services/calendar-datas.service.ts index 31822e0360..c0051efc27 100644 --- a/packages/nocodb/src/services/calendar-datas.service.ts +++ b/packages/nocodb/src/services/calendar-datas.service.ts @@ -48,6 +48,7 @@ export class CalendarDatasService { ...query, baseName: model.base_id, tableName: model.id, + calendarLimitOverride: 3000, // TODO: make this configurable in env }); } diff --git a/packages/nocodb/src/services/datas.service.ts b/packages/nocodb/src/services/datas.service.ts index 89b31f2dc6..676ed3428a 100644 --- a/packages/nocodb/src/services/datas.service.ts +++ b/packages/nocodb/src/services/datas.service.ts @@ -23,6 +23,7 @@ export class DatasService { query: any; disableOptimization?: boolean; ignorePagination?: boolean; + calendarLimitOverride?: number; throwErrorIfInvalidParams?: boolean; }, ) { @@ -42,6 +43,7 @@ export class DatasService { query: param.query, throwErrorIfInvalidParams: true, ignorePagination: param.ignorePagination, + calendarLimitOverride: param.calendarLimitOverride, }); } @@ -151,6 +153,7 @@ export class DatasService { throwErrorIfInvalidParams?: boolean; ignoreViewFilterAndSort?: boolean; ignorePagination?: boolean; + calendarLimitOverride?: number; }) { const { model, view, query = {}, ignoreViewFilterAndSort = false } = param; @@ -190,6 +193,7 @@ export class DatasService { ignoreViewFilterAndSort, throwErrorIfInvalidParams: param.throwErrorIfInvalidParams, ignorePagination: param.ignorePagination, + calendarLimitOverride: param.calendarLimitOverride, }), {}, listArgs, diff --git a/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts b/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts index ddb5cab119..919c746091 100644 --- a/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts +++ b/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts @@ -1575,7 +1575,7 @@ function viewRowTests() { const response = await request(context.app) .get( - `/api/v1/db/data/noco/${sakilaProject.id}/${rentalTable.id}/views/${view.id}/countByDate/`, + `/api/v1/db/-calendardata/noco/${sakilaProject.id}/${rentalTable.id}/views/${view.id}/countByDate/`, ) .set('xc-auth', context.token) .expect(expectStatus); From 8aa922d667c503a2d730bc1d533f776d64b201fe Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:29 +0000 Subject: [PATCH 14/77] fix(nocodb): tests --- .../tests/unit/rest/tests/viewRow.test.ts | 45 ++++++++++++++++++- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts b/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts index 919c746091..b8b28728a0 100644 --- a/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts +++ b/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts @@ -1554,6 +1554,39 @@ function viewRowTests() { await testViewRowNotExists(ViewTypes.CALENDAR); }); + const testCalendarDataApi = async () => { + const table = rentalTable; + const calendar_range = { + fk_from_column_id: rentalColumns.find((c) => c.title === 'RentalDate').id, + }; + + const view = await createView(context, { + title: 'View', + table: table, + type: ViewTypes.CALENDAR, + range: calendar_range, + }); + + const response = await request(context.app) + .get( + `/api/v1/db/calendar-data/noco/${sakilaProject.id}/${table.id}/views/${view.id}`, + ) + .query({ + from_date: '2005-05-25', + to_date: '2005-05-26', + }) + .set('xc-auth', context.token) + .expect(200); + + if (response.body.list.length !== 137) { + throw new Error('Wrong calendar data'); + } + }; + + it('Calendar data', async function () { + await testCalendarDataApi(); + }); + const testCountDatesByRange = async (viewType: ViewTypes) => { let calendar_range = {}; let expectStatus = 400; @@ -1575,12 +1608,20 @@ function viewRowTests() { const response = await request(context.app) .get( - `/api/v1/db/-calendardata/noco/${sakilaProject.id}/${rentalTable.id}/views/${view.id}/countByDate/`, + `/api/v1/db/calendar-data/noco/${sakilaProject.id}/${rentalTable.id}/views/${view.id}/countByDate/`, ) + .query({ + from_date: '2005-05-25', + to_date: '2005-05-26', + }) .set('xc-auth', context.token) .expect(expectStatus); - if (expectStatus === 200 && response.body.length !== 25) { + if ( + expectStatus === 200 && + response.body.count !== 137 && + response.body.dates.length !== 137 + ) { throw new Error('Wrong count'); } else if ( expectStatus === 400 && From 997b1f741fb188e71e319d4569a24a9c225717e2 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:30 +0000 Subject: [PATCH 15/77] fix(nocodb): limit date_range for new apis --- packages/nocodb/src/services/calendar-datas.service.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/nocodb/src/services/calendar-datas.service.ts b/packages/nocodb/src/services/calendar-datas.service.ts index c0051efc27..a6e0dcbfde 100644 --- a/packages/nocodb/src/services/calendar-datas.service.ts +++ b/packages/nocodb/src/services/calendar-datas.service.ts @@ -20,6 +20,10 @@ export class CalendarDatasService { if (!from_date || !to_date) NcError.badRequest('from_date and to_date are required'); + if (dayjs(to_date).diff(dayjs(from_date), 'days') > 42) { + NcError.badRequest('Date range should not exceed 42 days'); + } + const view = await View.get(viewId); if (!view) NcError.notFound('View not found'); @@ -100,6 +104,10 @@ export class CalendarDatasService { if (!from_date || !to_date) NcError.badRequest('from_date and to_date are required'); + if (dayjs(to_date).diff(dayjs(from_date), 'days') > 395) { + NcError.badRequest('Date range should not exceed 395 days'); + } + const view = await View.get(viewId); if (!view) NcError.notFound('View not found'); From d720109b86f55ba093b11a8084c2a66f175ba30a Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:30 +0000 Subject: [PATCH 16/77] fix(nocodb): skip loadCalendarData in year view --- packages/nc-gui/composables/useCalendarViewStore.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/nc-gui/composables/useCalendarViewStore.ts b/packages/nc-gui/composables/useCalendarViewStore.ts index e43efd27c9..b7929f5f8d 100644 --- a/packages/nc-gui/composables/useCalendarViewStore.ts +++ b/packages/nc-gui/composables/useCalendarViewStore.ts @@ -432,6 +432,10 @@ const [useProvideCalendarViewStore, useCalendarViewStore] = useInjectionState( async function loadCalendarData() { if ((!base?.value?.id || !meta.value?.id || !viewMeta.value?.id) && !isPublic?.value) return + if (activeCalendarView.value === 'year') { + return + } + let prevDate: string | null | dayjs.Dayjs = null let fromDate: dayjs.Dayjs | null | string = null let toDate: dayjs.Dayjs | null | string = null From 51ab21bfcfe2305ed30e32d23f4fd6e679ff8969 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:30 +0000 Subject: [PATCH 17/77] fix(nocodb): oss limit override --- packages/nocodb/src/db/BaseModelSqlv2.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 7172f1aac9..958e13bebb 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -434,7 +434,7 @@ class BaseModelSqlv2 { if (!calendarLimitOverride) { applyPaginate(qb, rest); } else { - applyPaginate(qb, { limit: calendarLimitOverride, ...rest }); + applyPaginate(qb, { ...rest, limit: calendarLimitOverride }); } } const proto = await this.getProto(); From 436fe8aa2fd8cce77b9161fde86f4506dc96eb3b Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Thu, 29 Feb 2024 10:15:30 +0000 Subject: [PATCH 18/77] fix(nocodb): get from_date and to_date from decorator --- .../controllers/calendars-datas.controller.ts | 31 +++++++++++++- .../src/services/calendar-datas.service.ts | 40 ++++++++++++++----- 2 files changed, 59 insertions(+), 12 deletions(-) diff --git a/packages/nocodb/src/controllers/calendars-datas.controller.ts b/packages/nocodb/src/controllers/calendars-datas.controller.ts index 7231fd00dd..47fb47146c 100644 --- a/packages/nocodb/src/controllers/calendars-datas.controller.ts +++ b/packages/nocodb/src/controllers/calendars-datas.controller.ts @@ -1,4 +1,12 @@ -import { Controller, Get, Param, Req, Res, UseGuards } from '@nestjs/common'; +import { + Controller, + Get, + Param, + Query, + Req, + Res, + UseGuards, +} from '@nestjs/common'; import { Request, Response } from 'express'; import { GlobalGuard } from '~/guards/global/global.guard'; import { DataApiLimiterGuard } from '~/guards/data-api-limiter.guard'; @@ -14,10 +22,17 @@ export class CalendarDatasController { @Get(['/api/v1/db/calendar-data/:orgs/:baseName/:tableName/views/:viewName']) @Acl('dataList') - async dataList(@Req() req: Request, @Param('viewName') viewId: string) { + async dataList( + @Req() req: Request, + @Param('viewName') viewId: string, + @Query('from_date') fromDate: string, + @Query('to_date') toDate: string, + ) { return await this.calendarDatasService.getCalendarDataList({ viewId: viewId, query: req.query, + from_date: fromDate, + to_date: toDate, }); } @@ -31,12 +46,16 @@ export class CalendarDatasController { @Param('baseName') baseName: string, @Param('tableName') tableName: string, @Param('viewName') viewName: string, + @Query('from_date') fromDate: string, + @Query('to_date') toDate: string, ) { const startTime = process.hrtime(); const data = await this.calendarDatasService.getCalendarRecordCount({ query: req.query, viewId: viewName, + from_date: fromDate, + to_date: toDate, }); const elapsedSeconds = parseHrtimeToMilliSeconds(process.hrtime(startTime)); @@ -51,11 +70,15 @@ export class CalendarDatasController { async countByDate( @Req() req: Request, @Param('sharedViewUuid') sharedViewUuid: string, + @Query('from_date') fromDate: string, + @Query('to_date') toDate: string, ) { return await this.calendarDatasService.getPublicCalendarRecordCount({ query: req.query, password: req.headers?.['xc-password'] as string, sharedViewUuid, + from_date: fromDate, + to_date: toDate, }); } @@ -66,11 +89,15 @@ export class CalendarDatasController { async getPublicCalendarDataList( @Req() req: Request, @Param('sharedViewUuid') sharedViewUuid: string, + @Query('from_date') fromDate: string, + @Query('to_date') toDate: string, ) { return await this.calendarDatasService.getPublicCalendarDataList({ query: req.query, password: req.headers?.['xc-password'] as string, sharedViewUuid, + from_date: fromDate, + to_date: toDate, }); } } diff --git a/packages/nocodb/src/services/calendar-datas.service.ts b/packages/nocodb/src/services/calendar-datas.service.ts index a6e0dcbfde..d34a7c637e 100644 --- a/packages/nocodb/src/services/calendar-datas.service.ts +++ b/packages/nocodb/src/services/calendar-datas.service.ts @@ -12,10 +12,13 @@ export class CalendarDatasService { constructor(protected datasService: DatasService) {} - async getCalendarDataList(param: { viewId: string; query: any }) { - const { viewId, query } = param; - const from_date = query.from_date; - const to_date = query.to_date; + async getCalendarDataList(param: { + viewId: string; + query: any; + from_date: string; + to_date: string; + }) { + const { viewId, query, from_date, to_date } = param; if (!from_date || !to_date) NcError.badRequest('from_date and to_date are required'); @@ -60,6 +63,8 @@ export class CalendarDatasService { password: string; query: any; sharedViewUuid: string; + from_date: string; + to_date: string; }) { const { sharedViewUuid, password, query = {} } = param; const view = await View.getByUUID(sharedViewUuid); @@ -73,13 +78,20 @@ export class CalendarDatasService { return NcError.forbidden(ErrorMessages.INVALID_SHARED_VIEW_PASSWORD); } - return this.getCalendarRecordCount({ viewId: view.id, query }); + return this.getCalendarRecordCount({ + viewId: view.id, + query, + from_date: param.from_date, + to_date: param.to_date, + }); } async getPublicCalendarDataList(param: { password: string; query: any; sharedViewUuid: string; + from_date: string; + to_date: string; }) { const { sharedViewUuid, password, query = {} } = param; const view = await View.getByUUID(sharedViewUuid); @@ -93,13 +105,21 @@ export class CalendarDatasService { return NcError.forbidden(ErrorMessages.INVALID_SHARED_VIEW_PASSWORD); } - return this.getCalendarDataList({ viewId: view.id, query }); + return this.getCalendarDataList({ + viewId: view.id, + query, + from_date: param.from_date, + to_date: param.to_date, + }); } - async getCalendarRecordCount(param: { viewId: string; query: any }) { - const { viewId, query } = param; - const from_date = query.from_date; - const to_date = query.to_date; + async getCalendarRecordCount(param: { + viewId: string; + query: any; + from_date: string; + to_date: string; + }) { + const { viewId, query, from_date, to_date } = param; if (!from_date || !to_date) NcError.badRequest('from_date and to_date are required'); From ea076e2d5aae5bc49f8fa1987f0589295b6bed49 Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Fri, 1 Mar 2024 12:31:49 +0000 Subject: [PATCH 19/77] docs: webhook image fix --- .../020.webhook/020.create-webhook.md | 2 +- .../automations/webhooks/create-webhook-2.png | Bin 0 -> 216665 bytes .../automations/webhooks/create-webhook-2.png | Bin 0 -> 194673 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 packages/noco-docs/static/img/v2-unannotated/automations/webhooks/create-webhook-2.png create mode 100644 packages/noco-docs/static/img/v2/automations/webhooks/create-webhook-2.png diff --git a/packages/noco-docs/docs/130.automation/020.webhook/020.create-webhook.md b/packages/noco-docs/docs/130.automation/020.webhook/020.create-webhook.md index 16f9c22e61..00eea65d61 100644 --- a/packages/noco-docs/docs/130.automation/020.webhook/020.create-webhook.md +++ b/packages/noco-docs/docs/130.automation/020.webhook/020.create-webhook.md @@ -36,7 +36,7 @@ keywords: ['NocoDB webhook', 'create webhook'] 6. Test webhook (with sample payload) to verify if parameter are configured appropriately (optional) 7. Save the webhook -![Configuring webhook](/img/v2/webhook/create-webhook-2.png) +![Configuring webhook](/img/v2/automations/webhooks/create-webhook-2.png) ### Webhook with conditions In case of webhook with conditions, only records meeting the configured criteria will trigger webhook. For example, trigger webhook only when `Status` is `Complete`. You can also configure multiple conditions using `AND` or `OR` operators. For example, trigger webhook only when `Status` is `Complete` and `Priority` is `High`. diff --git a/packages/noco-docs/static/img/v2-unannotated/automations/webhooks/create-webhook-2.png b/packages/noco-docs/static/img/v2-unannotated/automations/webhooks/create-webhook-2.png new file mode 100644 index 0000000000000000000000000000000000000000..552d944dd758f75aee786ebe7520057ff7afabe3 GIT binary patch literal 216665 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

7+F4g|j54vR#sl3e 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 SLU(Qf|D?p^MN5R=ef)o&!b$W1 literal 0 HcmV?d00001 From 55e00f763795960a93bd7482aad19729ee13b65e Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Sat, 2 Mar 2024 04:51:43 +0000 Subject: [PATCH 20/77] fix(nocodb) :add convertAttachmentType in form-view --- packages/nocodb/src/models/FormView.ts | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/packages/nocodb/src/models/FormView.ts b/packages/nocodb/src/models/FormView.ts index 22dcbac64a..d94851d07d 100644 --- a/packages/nocodb/src/models/FormView.ts +++ b/packages/nocodb/src/models/FormView.ts @@ -1,6 +1,7 @@ import type { MetaType } from 'nocodb-sdk'; import type { BoolType, FormType } from 'nocodb-sdk'; import FormViewColumn from '~/models/FormViewColumn'; +import { PresignedUrl } from '~/models'; import View from '~/models/View'; import { extractProps } from '~/helpers/extractProps'; import NocoCache from '~/cache/NocoCache'; @@ -46,11 +47,20 @@ export default class FormView implements FormType { view = await ncMeta.metaGet2(null, null, MetaTable.FORM_VIEW, { fk_view_id: viewId, }); + if (view) { view.meta = deserializeJSON(view.meta); await NocoCache.set(`${CacheScope.FORM_VIEW}:${viewId}`, view); } } + const convertedAtt = await this._convertAttachmentType({ + banner_image_url: view?.banner_image_url, + logo_url: view?.logo_url, + }); + + view.banner_image_url = serializeJSON(convertedAtt.banner_image_url); + view.logo_url = serializeJSON(convertedAtt.logo_url); + return view && new FormView(view); } @@ -131,4 +141,45 @@ export default class FormView implements FormType { await form.getColumns(ncMeta); return form; } + + protected static async _convertAttachmentType( + formAttachments: Record, + ) { + try { + if (formAttachments) { + const promises = []; + + for (const key in formAttachments) { + if ( + formAttachments[key] && + typeof formAttachments[key] === 'string' + ) { + formAttachments[key] = deserializeJSON(formAttachments[key]); + } + + if (formAttachments[key]?.path) { + promises.push( + PresignedUrl.getSignedUrl({ + path: formAttachments[key].path.replace(/^download\//, ''), + }).then((r) => (formAttachments[key].signedPath = r)), + ); + } else if (formAttachments[key]?.url) { + if (formAttachments[key].url.includes('.amazonaws.com/')) { + const relativePath = decodeURI( + formAttachments[key].url.split('.amazonaws.com/')[1], + ); + promises.push( + PresignedUrl.getSignedUrl({ + path: relativePath, + s3: true, + }).then((r) => (formAttachments[key].signedUrl = r)), + ); + } + } + } + await Promise.all(promises); + } + } catch {} + return formAttachments; + } } From 1ff49475380632f17c781925aca27447f03b49d6 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Sat, 2 Mar 2024 04:51:43 +0000 Subject: [PATCH 21/77] fix(nocodb): get signedPath or signedUrl for form attachments --- packages/nocodb/src/models/FormView.ts | 50 ++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/packages/nocodb/src/models/FormView.ts b/packages/nocodb/src/models/FormView.ts index d94851d07d..d9e17f9bb0 100644 --- a/packages/nocodb/src/models/FormView.ts +++ b/packages/nocodb/src/models/FormView.ts @@ -1,7 +1,7 @@ import type { MetaType } from 'nocodb-sdk'; import type { BoolType, FormType } from 'nocodb-sdk'; -import FormViewColumn from '~/models/FormViewColumn'; import { PresignedUrl } from '~/models'; +import FormViewColumn from '~/models/FormViewColumn'; import View from '~/models/View'; import { extractProps } from '~/helpers/extractProps'; import NocoCache from '~/cache/NocoCache'; @@ -53,13 +53,14 @@ export default class FormView implements FormType { await NocoCache.set(`${CacheScope.FORM_VIEW}:${viewId}`, view); } } - const convertedAtt = await this._convertAttachmentType({ + + const convertedAttachment = await this.convertAttachmentType({ banner_image_url: view?.banner_image_url, logo_url: view?.logo_url, }); - view.banner_image_url = serializeJSON(convertedAtt.banner_image_url); - view.logo_url = serializeJSON(convertedAtt.logo_url); + view.banner_image_url = serializeJSON(convertedAttachment.banner_image_url); + view.logo_url = serializeJSON(convertedAttachment.logo_url); return view && new FormView(view); } @@ -84,6 +85,17 @@ export default class FormView implements FormType { if (insertObj.meta) { insertObj.meta = serializeJSON(insertObj.meta); } + + if (insertObj?.logo_url) { + insertObj.logo_url = this.serializeAttachmentJSON(insertObj.logo_url); + } + + if (insertObj?.banner_image_url) { + insertObj.banner_image_url = this.serializeAttachmentJSON( + insertObj.banner_image_url, + ); + } + if (!(view.base_id && view.source_id)) { const viewRef = await View.get(view.fk_view_id); insertObj.base_id = viewRef.base_id; @@ -113,6 +125,16 @@ export default class FormView implements FormType { 'meta', ]); + if (updateObj?.logo_url) { + updateObj.logo_url = this.serializeAttachmentJSON(updateObj.logo_url); + } + + if (updateObj?.banner_image_url) { + updateObj.banner_image_url = this.serializeAttachmentJSON( + updateObj.banner_image_url, + ); + } + // update meta const res = await ncMeta.metaUpdate( null, @@ -142,7 +164,23 @@ export default class FormView implements FormType { return form; } - protected static async _convertAttachmentType( + static serializeAttachmentJSON(attachment: string) { + if (attachment?.trim()) { + return serializeJSON( + extractProps(deserializeJSON(attachment), [ + 'url', + 'path', + 'title', + 'mimetype', + 'size', + 'icon', + ]), + ); + } + return ''; + } + + protected static async convertAttachmentType( formAttachments: Record, ) { try { @@ -151,7 +189,7 @@ export default class FormView implements FormType { for (const key in formAttachments) { if ( - formAttachments[key] && + formAttachments[key]?.trim() && typeof formAttachments[key] === 'string' ) { formAttachments[key] = deserializeJSON(formAttachments[key]); From f50531cf25ce16899d9175e3b1677e8cca3560cc Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Sat, 2 Mar 2024 04:51:43 +0000 Subject: [PATCH 22/77] fix(nocodb): update swagger file for form banner & logo url --- packages/nocodb/src/schema/swagger-v2.json | 54 ++++++++++++++++------ packages/nocodb/src/schema/swagger.json | 54 ++++++++++++++++------ 2 files changed, 82 insertions(+), 26 deletions(-) diff --git a/packages/nocodb/src/schema/swagger-v2.json b/packages/nocodb/src/schema/swagger-v2.json index 47740de402..54d62fbaab 100644 --- a/packages/nocodb/src/schema/swagger-v2.json +++ b/packages/nocodb/src/schema/swagger-v2.json @@ -5714,7 +5714,7 @@ "examples": { "Example 1": { "value": { - "banner_image_url": null, + "banner_image_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533}", "email": "user@example.com", "heading": "My Form", "lock_type": "collaborative", @@ -5755,7 +5755,7 @@ "Example 1": { "value": { "source_id": "ds_g4ccx6e77h1dmi", - "banner_image_url": null, + "banner_image_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533,\"signedPath\":\"dltemp/93tI0NcweqZcn7qH/1709286000000/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\"}", "columns": [ { "id": "fvc_ugj9zo5bzocxtl", @@ -12978,7 +12978,7 @@ "examples": [ { "source_id": "ds_g4ccx6e77h1dmi", - "banner_image_url": null, + "banner_image_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533}", "columns": [ { "id": "fvc_ugj9zo5bzocxtl", @@ -13002,7 +13002,7 @@ "fk_model_id": "md_rsu68aqjsbyqtl", "heading": "My Form", "lock_type": "collaborative", - "logo_url": null, + "logo_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533}", "meta": null, "redirect_after_secs": null, "redirect_url": null, @@ -13024,8 +13024,15 @@ } }, "banner_image_url": { - "$ref": "#/components/schemas/StringOrNull", - "description": "Banner Image URL. Not in use currently." + "description": "Banner Image URL", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "columns": { "type": "array", @@ -13067,8 +13074,15 @@ "example": "collaborative" }, "logo_url": { - "$ref": "#/components/schemas/StringOrNull", - "description": "Logo URL. Not in use currently." + "description": "Logo URL.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "meta": { "$ref": "#/components/schemas/Meta", @@ -13113,7 +13127,7 @@ "description": "Model for Form Update Request", "examples": [ { - "banner_image_url": null, + "banner_image_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533}", "email": "user@example.com", "heading": "My Form", "logo_url": null, @@ -13130,8 +13144,15 @@ "type": "object", "properties": { "banner_image_url": { - "$ref": "#/components/schemas/TextOrNull", - "description": "Banner Image URL. Not in use currently." + "description": "Banner Image URL", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "email": { "$ref": "#/components/schemas/StringOrNull", @@ -13144,8 +13165,15 @@ "type": "string" }, "logo_url": { - "$ref": "#/components/schemas/TextOrNull", - "description": "Logo URL. Not in use currently." + "description": "Logo URL.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "meta": { "$ref": "#/components/schemas/Meta", diff --git a/packages/nocodb/src/schema/swagger.json b/packages/nocodb/src/schema/swagger.json index 71f2920c9b..557b0315be 100644 --- a/packages/nocodb/src/schema/swagger.json +++ b/packages/nocodb/src/schema/swagger.json @@ -7426,7 +7426,7 @@ "examples": { "Example 1": { "value": { - "banner_image_url": null, + "banner_image_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533}", "email": "user@example.com", "heading": "My Form", "lock_type": "collaborative", @@ -7467,7 +7467,7 @@ "Example 1": { "value": { "source_id": "ds_g4ccx6e77h1dmi", - "banner_image_url": null, + "banner_image_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533,\"signedPath\":\"dltemp/93tI0NcweqZcn7qH/1709286000000/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\"}", "columns": [ { "id": "fvc_ugj9zo5bzocxtl", @@ -18620,7 +18620,7 @@ "examples": [ { "source_id": "ds_g4ccx6e77h1dmi", - "banner_image_url": null, + "banner_image_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533}", "columns": [ { "id": "fvc_ugj9zo5bzocxtl", @@ -18644,7 +18644,7 @@ "fk_model_id": "md_rsu68aqjsbyqtl", "heading": "My Form", "lock_type": "collaborative", - "logo_url": null, + "logo_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533}", "meta": null, "redirect_after_secs": null, "redirect_url": null, @@ -18666,8 +18666,15 @@ } }, "banner_image_url": { - "$ref": "#/components/schemas/TextOrNull", - "description": "Banner Image URL. Not in use currently." + "description": "Banner Image URL", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "columns": { "type": "array", @@ -18709,8 +18716,15 @@ "example": "collaborative" }, "logo_url": { - "$ref": "#/components/schemas/TextOrNull", - "description": "Logo URL. Not in use currently." + "description": "Logo URL", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "meta": { "$ref": "#/components/schemas/Meta", @@ -18755,7 +18769,7 @@ "description": "Model for Form Update Request", "examples": [ { - "banner_image_url": null, + "banner_image_url": "{\"path\":\"download/noco/pm0umqsip16i1u5/m8yn03dncqal6ri//7XeRtAlAOch-9THAFI.png\",\"title\":\"Screenshot 2024-03-01 at 11.24.39 AM.png\",\"mimetype\":\"image/png\",\"size\":392533}", "email": "user@example.com", "heading": "My Form", "logo_url": null, @@ -18772,8 +18786,15 @@ "type": "object", "properties": { "banner_image_url": { - "$ref": "#/components/schemas/StringOrNull", - "description": "Banner Image URL. Not in use currently." + "description": "Banner Image URL", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "email": { "$ref": "#/components/schemas/StringOrNull", @@ -18786,8 +18807,15 @@ "type": "string" }, "logo_url": { - "$ref": "#/components/schemas/StringOrNull", - "description": "Logo URL. Not in use currently." + "description": "Logo URL", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "meta": { "$ref": "#/components/schemas/Meta", From 858a134d8ff129cf618414db070c84f52bbaa7cd Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Sat, 2 Mar 2024 04:51:43 +0000 Subject: [PATCH 23/77] chore(nocodb): lint --- packages/nocodb/src/models/FormView.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/models/FormView.ts b/packages/nocodb/src/models/FormView.ts index d9e17f9bb0..e98eb787a5 100644 --- a/packages/nocodb/src/models/FormView.ts +++ b/packages/nocodb/src/models/FormView.ts @@ -89,7 +89,7 @@ export default class FormView implements FormType { if (insertObj?.logo_url) { insertObj.logo_url = this.serializeAttachmentJSON(insertObj.logo_url); } - + if (insertObj?.banner_image_url) { insertObj.banner_image_url = this.serializeAttachmentJSON( insertObj.banner_image_url, From dcf41c8f47c549136f694f1a538bd91895032717 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Sat, 2 Mar 2024 04:51:43 +0000 Subject: [PATCH 24/77] fix: update form banner & logo url response type --- .../nc-gui/components/general/FormBanner.vue | 4 +- .../nc-gui/components/smartsheet/Form.vue | 7 +- packages/nocodb/src/models/FormView.ts | 22 +-- packages/nocodb/src/schema/swagger-v2.json | 146 +++++++++++++----- packages/nocodb/src/schema/swagger.json | 146 +++++++++++++----- 5 files changed, 230 insertions(+), 95 deletions(-) diff --git a/packages/nc-gui/components/general/FormBanner.vue b/packages/nc-gui/components/general/FormBanner.vue index 96803bda59..de3e7d187d 100644 --- a/packages/nc-gui/components/general/FormBanner.vue +++ b/packages/nc-gui/components/general/FormBanner.vue @@ -1,6 +1,8 @@