diff --git a/cli/src/api/open-api/api.ts b/cli/src/api/open-api/api.ts index f9c983833f..67334711ee 100644 --- a/cli/src/api/open-api/api.ts +++ b/cli/src/api/open-api/api.ts @@ -3542,6 +3542,12 @@ export interface SystemConfigTemplateStorageOptionDto { * @memberof SystemConfigTemplateStorageOptionDto */ 'secondOptions': Array; + /** + * + * @type {Array} + * @memberof SystemConfigTemplateStorageOptionDto + */ + 'weekOptions': Array; /** * * @type {Array} diff --git a/mobile/openapi/doc/SystemConfigTemplateStorageOptionDto.md b/mobile/openapi/doc/SystemConfigTemplateStorageOptionDto.md index 18adaa6fad..6465fcbef8 100644 Binary files a/mobile/openapi/doc/SystemConfigTemplateStorageOptionDto.md and b/mobile/openapi/doc/SystemConfigTemplateStorageOptionDto.md differ diff --git a/mobile/openapi/lib/model/system_config_template_storage_option_dto.dart b/mobile/openapi/lib/model/system_config_template_storage_option_dto.dart index 23d17e16aa..da9138745f 100644 Binary files a/mobile/openapi/lib/model/system_config_template_storage_option_dto.dart and b/mobile/openapi/lib/model/system_config_template_storage_option_dto.dart differ diff --git a/mobile/openapi/test/system_config_template_storage_option_dto_test.dart b/mobile/openapi/test/system_config_template_storage_option_dto_test.dart index 57e059d9b8..6082748336 100644 Binary files a/mobile/openapi/test/system_config_template_storage_option_dto_test.dart and b/mobile/openapi/test/system_config_template_storage_option_dto_test.dart differ diff --git a/server/immich-openapi-specs.json b/server/immich-openapi-specs.json index 21a905f6bd..a1f63e450d 100644 --- a/server/immich-openapi-specs.json +++ b/server/immich-openapi-specs.json @@ -7924,6 +7924,12 @@ }, "type": "array" }, + "weekOptions": { + "items": { + "type": "string" + }, + "type": "array" + }, "yearOptions": { "items": { "type": "string" @@ -7934,6 +7940,7 @@ "required": [ "yearOptions", "monthOptions", + "weekOptions", "dayOptions", "hourOptions", "minuteOptions", diff --git a/server/src/domain/storage-template/storage-template.service.ts b/server/src/domain/storage-template/storage-template.service.ts index 5191bf557d..f6265c972e 100644 --- a/server/src/domain/storage-template/storage-template.service.ts +++ b/server/src/domain/storage-template/storage-template.service.ts @@ -16,6 +16,7 @@ import { supportedMinuteTokens, supportedMonthTokens, supportedSecondTokens, + supportedWeekTokens, supportedYearTokens, } from '../system-config'; import { SystemConfigCore } from '../system-config/system-config.core'; @@ -239,6 +240,7 @@ export class StorageTemplateService { const dateTokens = [ ...supportedYearTokens, ...supportedMonthTokens, + ...supportedWeekTokens, ...supportedDayTokens, ...supportedHourTokens, ...supportedMinuteTokens, diff --git a/server/src/domain/system-config/response-dto/system-config-template-storage-option.dto.ts b/server/src/domain/system-config/response-dto/system-config-template-storage-option.dto.ts index c9150f1ddd..f0c8b9b64a 100644 --- a/server/src/domain/system-config/response-dto/system-config-template-storage-option.dto.ts +++ b/server/src/domain/system-config/response-dto/system-config-template-storage-option.dto.ts @@ -1,6 +1,7 @@ export class SystemConfigTemplateStorageOptionDto { yearOptions!: string[]; monthOptions!: string[]; + weekOptions!: string[]; dayOptions!: string[]; hourOptions!: string[]; minuteOptions!: string[]; diff --git a/server/src/domain/system-config/system-config.constants.ts b/server/src/domain/system-config/system-config.constants.ts index 6197dbf217..ca0497a9da 100644 --- a/server/src/domain/system-config/system-config.constants.ts +++ b/server/src/domain/system-config/system-config.constants.ts @@ -1,5 +1,6 @@ export const supportedYearTokens = ['y', 'yy']; export const supportedMonthTokens = ['M', 'MM', 'MMM', 'MMMM']; +export const supportedWeekTokens = ['W', 'WW']; export const supportedDayTokens = ['d', 'dd']; export const supportedHourTokens = ['h', 'hh', 'H', 'HH']; export const supportedMinuteTokens = ['m', 'mm']; @@ -18,6 +19,7 @@ export const supportedPresetTokens = [ '{{y}}-{{MMM}}-{{dd}}/{{filename}}', '{{y}}-{{MMMM}}-{{dd}}/{{filename}}', '{{y}}/{{y}}-{{MM}}/{{filename}}', + '{{y}}/{{y}}-{{WW}}/{{filename}}', ]; export const INITIAL_SYSTEM_CONFIG = 'INITIAL_SYSTEM_CONFIG'; diff --git a/server/src/domain/system-config/system-config.service.spec.ts b/server/src/domain/system-config/system-config.service.spec.ts index fc50839ba7..e084da9ad3 100644 --- a/server/src/domain/system-config/system-config.service.spec.ts +++ b/server/src/domain/system-config/system-config.service.spec.ts @@ -221,8 +221,10 @@ describe(SystemConfigService.name, () => { '{{y}}-{{MMM}}-{{dd}}/{{filename}}', '{{y}}-{{MMMM}}-{{dd}}/{{filename}}', '{{y}}/{{y}}-{{MM}}/{{filename}}', + '{{y}}/{{y}}-{{WW}}/{{filename}}', ], secondOptions: ['s', 'ss'], + weekOptions: ['W', 'WW'], yearOptions: ['y', 'yy'], }); }); diff --git a/server/src/domain/system-config/system-config.service.ts b/server/src/domain/system-config/system-config.service.ts index cf289b7f97..3359175010 100644 --- a/server/src/domain/system-config/system-config.service.ts +++ b/server/src/domain/system-config/system-config.service.ts @@ -10,6 +10,7 @@ import { supportedMonthTokens, supportedPresetTokens, supportedSecondTokens, + supportedWeekTokens, supportedYearTokens, } from './system-config.constants'; import { SystemConfigCore, SystemConfigValidator } from './system-config.core'; @@ -57,6 +58,7 @@ export class SystemConfigService { const options = new SystemConfigTemplateStorageOptionDto(); options.dayOptions = supportedDayTokens; + options.weekOptions = supportedWeekTokens; options.monthOptions = supportedMonthTokens; options.yearOptions = supportedYearTokens; options.hourOptions = supportedHourTokens; diff --git a/web/src/api/open-api/api.ts b/web/src/api/open-api/api.ts index f9c983833f..67334711ee 100644 --- a/web/src/api/open-api/api.ts +++ b/web/src/api/open-api/api.ts @@ -3542,6 +3542,12 @@ export interface SystemConfigTemplateStorageOptionDto { * @memberof SystemConfigTemplateStorageOptionDto */ 'secondOptions': Array; + /** + * + * @type {Array} + * @memberof SystemConfigTemplateStorageOptionDto + */ + 'weekOptions': Array; /** * * @type {Array} diff --git a/web/src/lib/components/admin-page/settings/storage-template/storage-template-settings.svelte b/web/src/lib/components/admin-page/settings/storage-template/storage-template-settings.svelte index 5cee5edb46..c0018edcb7 100644 --- a/web/src/lib/components/admin-page/settings/storage-template/storage-template-settings.svelte +++ b/web/src/lib/components/admin-page/settings/storage-template/storage-template-settings.svelte @@ -58,11 +58,12 @@ filetypefull: 'IMAGE', }; - const dt = luxon.DateTime.fromISO(new Date('2022-09-04T20:03:05.250').toISOString()); + const dt = luxon.DateTime.fromISO(new Date('2022-02-03T04:56:05.250').toISOString()); const dateTokens = [ ...templateOptions.yearOptions, ...templateOptions.monthOptions, + ...templateOptions.weekOptions, ...templateOptions.dayOptions, ...templateOptions.hourOptions, ...templateOptions.minuteOptions, diff --git a/web/src/lib/components/admin-page/settings/storage-template/supported-datetime-panel.svelte b/web/src/lib/components/admin-page/settings/storage-template/supported-datetime-panel.svelte index d95c58fda5..8a72268240 100644 --- a/web/src/lib/components/admin-page/settings/storage-template/supported-datetime-panel.svelte +++ b/web/src/lib/components/admin-page/settings/storage-template/supported-datetime-panel.svelte @@ -16,9 +16,9 @@

Asset's creation timestamp is used for the datetime information

-

Sample time 2022-09-04T20:03:05.250

+

Sample time 2022-02-03T04:56:05.250

-
+

YEAR

    @@ -37,6 +37,15 @@
+
+

WEEK

+
    + {#each options.weekOptions as weekFormat} +
  • {'{{'}{weekFormat}{'}}'} - {getLuxonExample(weekFormat)}
  • + {/each} +
+
+

DAY