From 98bf8eefa9f1541e9986b08e1dd3835707d40ed9 Mon Sep 17 00:00:00 2001 From: Bruno Date: Wed, 25 Sep 2024 12:51:50 +0200 Subject: [PATCH] feat(admin): file upload input and yield --- .vscode/settings.json | 2 +- package-lock.json | 2 ++ .../yields/link-yield/link-yield.component.ts | 21 ++++++++++++++----- .../modules/shared/yields/yield.component.ts | 3 ++- .../environments/environment.development.ts | 2 +- packages/core/manifest/.gitignore | 5 ++++- packages/core/manifest/manifest/backend.yml | 1 + packages/core/manifest/src/main.ts | 3 ++- .../src/upload/services/storage.service.ts | 8 +++---- 9 files changed, 33 insertions(+), 14 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index de36bfda..195d2be9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "yaml.schemas": { - "./packages/core/manifest/src/manifest/json-schema/schema.json": "**/manifest/**/**backend.yml" + "./packages/core/json-schema/src/schema/schema.json": "**/manifest/**/**backend.yml" }, "workbench.colorCustomizations": { diff --git a/package-lock.json b/package-lock.json index 4d926468..95b36136 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23956,6 +23956,7 @@ } }, "packages/core/json-schema": { + "name": "@repo/json-schema", "dependencies": { "fs": "^0.0.1-security", "json-schema-to-typescript": "^15.0.2", @@ -23975,6 +23976,7 @@ "@nestjs/typeorm": "^10.0.2", "@repo/admin": "*", "@repo/helpers": "*", + "@repo/json-schema": "*", "@repo/types": "*", "ajv": "^8.12.0", "chalk": "^4.1.2", diff --git a/packages/core/admin/src/app/modules/shared/yields/link-yield/link-yield.component.ts b/packages/core/admin/src/app/modules/shared/yields/link-yield/link-yield.component.ts index 5c5c7f12..7bdb423a 100644 --- a/packages/core/admin/src/app/modules/shared/yields/link-yield/link-yield.component.ts +++ b/packages/core/admin/src/app/modules/shared/yields/link-yield/link-yield.component.ts @@ -1,19 +1,27 @@ -import { NgIf } from '@angular/common' +import { NgClass, NgIf } from '@angular/common' import { Component, Input } from '@angular/core' import { TruncatePipe } from '../../pipes/truncate.pipe' +import { environment } from '../../../../../environments/environment' @Component({ selector: 'app-link-yield', standalone: true, - imports: [NgIf, TruncatePipe], + imports: [NgIf, NgClass, TruncatePipe], template: ` - - {{ value | truncate : 44 }} + + {{ value | truncate: 44 }} {{ value }} - `, @@ -22,4 +30,7 @@ import { TruncatePipe } from '../../pipes/truncate.pipe' export class LinkYieldComponent { @Input() value: string @Input() compact: boolean = true + @Input() external: boolean = true + + storageBaseUrl = environment.storageBaseUrl } diff --git a/packages/core/admin/src/app/modules/shared/yields/yield.component.ts b/packages/core/admin/src/app/modules/shared/yields/yield.component.ts index 14d86904..e1cc948e 100644 --- a/packages/core/admin/src/app/modules/shared/yields/yield.component.ts +++ b/packages/core/admin/src/app/modules/shared/yields/yield.component.ts @@ -43,8 +43,9 @@ import { TimestampYieldComponent } from './timestamp-yield/timestamp-yield.compo [value]="value" > { if (req.url.startsWith('/api') || req.url.startsWith('/storage')) { diff --git a/packages/core/manifest/src/upload/services/storage.service.ts b/packages/core/manifest/src/upload/services/storage.service.ts index ce50d0d2..5e0148b8 100644 --- a/packages/core/manifest/src/upload/services/storage.service.ts +++ b/packages/core/manifest/src/upload/services/storage.service.ts @@ -4,7 +4,7 @@ import { STORAGE_PATH } from '../../constants' import * as fs from 'fs' import * as mkdirp from 'mkdirp' -import * as uniqid from 'uniqid' +import uniqid from 'uniqid' @Injectable() export class StorageService { @@ -41,7 +41,7 @@ export class StorageService { const filePath: string = `${folder}/${uniqid()}-${file.originalname}` - fs.writeFileSync(filePath, file.buffer) + fs.writeFileSync(`${STORAGE_PATH}/${filePath}`, file.buffer) return filePath } @@ -61,9 +61,9 @@ export class StorageService { new Date().toLocaleString('en-us', { month: 'short' }) + new Date().getFullYear() - const folder: string = `${STORAGE_PATH}/${kebabize(entity)}/${kebabize(property)}/${dateString}` + const folder: string = `${kebabize(entity)}/${kebabize(property)}/${dateString}` - mkdirp.sync(folder) + mkdirp.sync(`${STORAGE_PATH}/${folder}`) return folder }