1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2025-01-14 14:43:17 +08:00

improving performance: adding index to DB, fixing indexing bug

This commit is contained in:
Patrik J. Braun 2019-01-06 23:15:52 +01:00
parent 56cdc834ed
commit 04b032ff2a
21 changed files with 194 additions and 83 deletions

View File

@ -7,6 +7,7 @@ import {ProjectPath} from '../../ProjectPath';
import {Config} from '../../../common/config/private/Config'; import {Config} from '../../../common/config/private/Config';
import {ReIndexingSensitivity} from '../../../common/config/private/IPrivateConfig'; import {ReIndexingSensitivity} from '../../../common/config/private/IPrivateConfig';
import {PhotoDTO} from '../../../common/entities/PhotoDTO'; import {PhotoDTO} from '../../../common/entities/PhotoDTO';
import {DiskMangerWorker} from '../threading/DiskMangerWorker';
export class GalleryManager implements IGalleryManager { export class GalleryManager implements IGalleryManager {
@ -14,7 +15,7 @@ export class GalleryManager implements IGalleryManager {
// If it seems that the content did not changed, do not work on it // If it seems that the content did not changed, do not work on it
if (knownLastModified && knownLastScanned) { if (knownLastModified && knownLastScanned) {
const stat = fs.statSync(path.join(ProjectPath.ImageFolder, relativeDirectoryName)); const stat = fs.statSync(path.join(ProjectPath.ImageFolder, relativeDirectoryName));
const lastModified = Math.max(stat.ctime.getTime(), stat.mtime.getTime()); const lastModified = DiskMangerWorker.calcLastModified(stat);
if (Date.now() - knownLastScanned <= Config.Server.indexing.cachedFolderTimeout && if (Date.now() - knownLastScanned <= Config.Server.indexing.cachedFolderTimeout &&
lastModified === knownLastModified && lastModified === knownLastModified &&
Config.Server.indexing.reIndexingSensitivity < ReIndexingSensitivity.high) { Config.Server.indexing.reIndexingSensitivity < ReIndexingSensitivity.high) {

View File

@ -20,6 +20,10 @@ import {VideoEntity} from './enitites/VideoEntity';
import {FileEntity} from './enitites/FileEntity'; import {FileEntity} from './enitites/FileEntity';
import {FileDTO} from '../../../common/entities/FileDTO'; import {FileDTO} from '../../../common/entities/FileDTO';
import {NotificationManager} from '../NotifocationManager'; import {NotificationManager} from '../NotifocationManager';
import {DiskMangerWorker} from '../threading/DiskMangerWorker';
import {Logger} from '../../Logger';
const LOG_TAG = '[GalleryManager]';
export class GalleryManager implements IGalleryManager, ISQLGalleryManager { export class GalleryManager implements IGalleryManager, ISQLGalleryManager {
@ -79,12 +83,12 @@ export class GalleryManager implements IGalleryManager, ISQLGalleryManager {
knownLastModified?: number, knownLastModified?: number,
knownLastScanned?: number): Promise<DirectoryDTO> { knownLastScanned?: number): Promise<DirectoryDTO> {
relativeDirectoryName = path.normalize(path.join('.' + path.sep, relativeDirectoryName)); relativeDirectoryName = DiskMangerWorker.normalizeDirPath(relativeDirectoryName);
const directoryName = path.basename(relativeDirectoryName); const directoryName = path.basename(relativeDirectoryName);
const directoryParent = path.join(path.dirname(relativeDirectoryName), path.sep); const directoryParent = path.join(path.dirname(relativeDirectoryName), path.sep);
const connection = await SQLConnection.getConnection(); const connection = await SQLConnection.getConnection();
const stat = fs.statSync(path.join(ProjectPath.ImageFolder, relativeDirectoryName)); const stat = fs.statSync(path.join(ProjectPath.ImageFolder, relativeDirectoryName));
const lastModified = Math.max(stat.ctime.getTime(), stat.mtime.getTime()); const lastModified = DiskMangerWorker.calcLastModified(stat);
const dir = await this.selectParentDir(connection, directoryName, directoryParent); const dir = await this.selectParentDir(connection, directoryName, directoryParent);
@ -104,6 +108,8 @@ export class GalleryManager implements IGalleryManager, ISQLGalleryManager {
if (dir.lastModified !== lastModified) { if (dir.lastModified !== lastModified) {
Logger.silly(LOG_TAG, 'Reindexing reason: lastModified mismatch: known: '
+ dir.lastModified + ', current:' + lastModified);
return this.indexDirectory(relativeDirectoryName); return this.indexDirectory(relativeDirectoryName);
} }
@ -114,6 +120,8 @@ export class GalleryManager implements IGalleryManager, ISQLGalleryManager {
Config.Server.indexing.reIndexingSensitivity >= ReIndexingSensitivity.high) { Config.Server.indexing.reIndexingSensitivity >= ReIndexingSensitivity.high) {
// on the fly reindexing // on the fly reindexing
Logger.silly(LOG_TAG, 'lazy reindexing reason: cache timeout: lastScanned: '
+ (Date.now() - dir.lastScanned) + ', cachedFolderTimeout:' + Config.Server.indexing.cachedFolderTimeout);
this.indexDirectory(relativeDirectoryName).catch((err) => { this.indexDirectory(relativeDirectoryName).catch((err) => {
console.error(err); console.error(err);
}); });
@ -123,6 +131,7 @@ export class GalleryManager implements IGalleryManager, ISQLGalleryManager {
} }
// never scanned (deep indexed), do it and return with it // never scanned (deep indexed), do it and return with it
Logger.silly(LOG_TAG, 'Reindexing reason: never scanned');
return this.indexDirectory(relativeDirectoryName); return this.indexDirectory(relativeDirectoryName);
@ -244,9 +253,9 @@ export class GalleryManager implements IGalleryManager, ISQLGalleryManager {
if (!!currentDir) {// Updated parent dir (if it was in the DB previously) if (!!currentDir) {// Updated parent dir (if it was in the DB previously)
currentDir.lastModified = scannedDirectory.lastModified; currentDir.lastModified = scannedDirectory.lastModified;
currentDir.lastScanned = scannedDirectory.lastScanned; currentDir.lastScanned = scannedDirectory.lastScanned;
currentDir.mediaCount = scannedDirectory.mediaCount;
currentDir = await directoryRepository.save(currentDir); currentDir = await directoryRepository.save(currentDir);
} else { } else {
(<DirectoryEntity>scannedDirectory).lastScanned = scannedDirectory.lastScanned;
currentDir = await directoryRepository.save(<DirectoryEntity>scannedDirectory); currentDir = await directoryRepository.save(<DirectoryEntity>scannedDirectory);
} }

View File

@ -17,7 +17,7 @@ const LOG_TAG = '[IndexingManager]';
export class IndexingManager implements IIndexingManager { export class IndexingManager implements IIndexingManager {
directoriesToIndex: string[] = []; directoriesToIndex: string[] = [];
indexingProgress: { current: string, left: number, indexed: number } = null; indexingProgress: IndexingProgressDTO = null;
enabled = false; enabled = false;
private indexNewDirectory = async (createThumbnails: boolean = false) => { private indexNewDirectory = async (createThumbnails: boolean = false) => {
if (this.directoriesToIndex.length === 0) { if (this.directoriesToIndex.length === 0) {
@ -35,6 +35,7 @@ export class IndexingManager implements IIndexingManager {
return; return;
} }
this.indexingProgress.indexed++; this.indexingProgress.indexed++;
this.indexingProgress.time.current = Date.now();
for (let i = 0; i < scanned.directories.length; i++) { for (let i = 0; i < scanned.directories.length; i++) {
this.directoriesToIndex.push(path.join(scanned.directories[i].path, scanned.directories[i].name)); this.directoriesToIndex.push(path.join(scanned.directories[i].path, scanned.directories[i].name));
} }
@ -71,10 +72,14 @@ export class IndexingManager implements IIndexingManager {
startIndexing(createThumbnails: boolean = false): void { startIndexing(createThumbnails: boolean = false): void {
if (this.directoriesToIndex.length === 0 && this.enabled === false) { if (this.directoriesToIndex.length === 0 && this.enabled === false) {
Logger.info(LOG_TAG, 'Starting indexing'); Logger.info(LOG_TAG, 'Starting indexing');
this.indexingProgress = <IndexingProgressDTO>{ this.indexingProgress = {
indexed: 0, indexed: 0,
left: 0, left: 0,
current: '' current: '',
time: {
start: Date.now(),
current: Date.now()
}
}; };
this.directoriesToIndex.push('/'); this.directoriesToIndex.push('/');
this.enabled = true; this.enabled = true;

View File

@ -40,7 +40,7 @@ export class SQLConnection {
VersionEntity VersionEntity
]; ];
options.synchronize = false; options.synchronize = false;
// options.logging = 'all'; // options.logging = 'all';
this.connection = await createConnection(options); this.connection = await createConnection(options);
await SQLConnection.schemeSync(this.connection); await SQLConnection.schemeSync(this.connection);
} }

View File

@ -1,4 +1,4 @@
import {Column, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn, Unique} from 'typeorm'; import {Column, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn, Unique, Index} from 'typeorm';
import {DirectoryDTO} from '../../../../common/entities/DirectoryDTO'; import {DirectoryDTO} from '../../../../common/entities/DirectoryDTO';
import {MediaEntity} from './MediaEntity'; import {MediaEntity} from './MediaEntity';
import {FileEntity} from './FileEntity'; import {FileEntity} from './FileEntity';
@ -7,12 +7,15 @@ import {FileEntity} from './FileEntity';
@Unique(['name', 'path']) @Unique(['name', 'path'])
export class DirectoryEntity implements DirectoryDTO { export class DirectoryEntity implements DirectoryDTO {
@Index()
@PrimaryGeneratedColumn() @PrimaryGeneratedColumn()
id: number; id: number;
@Index()
@Column() @Column()
name: string; name: string;
@Index()
@Column() @Column()
path: string; path: string;
@ -30,6 +33,10 @@ export class DirectoryEntity implements DirectoryDTO {
isPartial?: boolean; isPartial?: boolean;
@Column('smallint')
mediaCount: number;
@Index()
@ManyToOne(type => DirectoryEntity, directory => directory.directories, {onDelete: 'CASCADE'}) @ManyToOne(type => DirectoryEntity, directory => directory.directories, {onDelete: 'CASCADE'})
public parent: DirectoryEntity; public parent: DirectoryEntity;
@ -39,7 +46,6 @@ export class DirectoryEntity implements DirectoryDTO {
@OneToMany(type => MediaEntity, media => media.directory) @OneToMany(type => MediaEntity, media => media.directory)
public media: MediaEntity[]; public media: MediaEntity[];
@OneToMany(type => FileEntity, file => file.directory) @OneToMany(type => FileEntity, file => file.directory)
public metaFile: FileEntity[]; public metaFile: FileEntity[];

View File

@ -1,4 +1,4 @@
import {Column, Entity, ManyToOne, PrimaryGeneratedColumn} from 'typeorm'; import {Column, Entity, ManyToOne, PrimaryGeneratedColumn, Index} from 'typeorm';
import {DirectoryEntity} from './DirectoryEntity'; import {DirectoryEntity} from './DirectoryEntity';
import {FileDTO} from '../../../../common/entities/FileDTO'; import {FileDTO} from '../../../../common/entities/FileDTO';
@ -6,12 +6,14 @@ import {FileDTO} from '../../../../common/entities/FileDTO';
@Entity() @Entity()
export class FileEntity implements FileDTO { export class FileEntity implements FileDTO {
@Index()
@PrimaryGeneratedColumn() @PrimaryGeneratedColumn()
id: number; id: number;
@Column('text') @Column('text')
name: string; name: string;
@Index()
@ManyToOne(type => DirectoryEntity, directory => directory.metaFile, {onDelete: 'CASCADE'}) @ManyToOne(type => DirectoryEntity, directory => directory.metaFile, {onDelete: 'CASCADE'})
directory: DirectoryEntity; directory: DirectoryEntity;
} }

View File

@ -1,10 +1,8 @@
import {Column, Entity, ManyToOne, PrimaryGeneratedColumn, TableInheritance, Unique} from 'typeorm'; import {Column, Entity, ManyToOne, PrimaryGeneratedColumn, TableInheritance, Unique, Index} from 'typeorm';
import {DirectoryEntity} from './DirectoryEntity'; import {DirectoryEntity} from './DirectoryEntity';
import {MediaDimension, MediaDTO, MediaMetadata} from '../../../../common/entities/MediaDTO'; import {MediaDimension, MediaDTO, MediaMetadata} from '../../../../common/entities/MediaDTO';
import {OrientationTypes} from 'ts-exif-parser'; import {OrientationTypes} from 'ts-exif-parser';
import {CameraMetadataEntity, PositionMetaDataEntity} from './PhotoEntity'; import {CameraMetadataEntity, PositionMetaDataEntity} from './PhotoEntity';
import {FileEntity} from './FileEntity';
export class MediaDimensionEntity implements MediaDimension { export class MediaDimensionEntity implements MediaDimension {
@ -55,12 +53,14 @@ export class MediaMetadataEntity implements MediaMetadata {
@TableInheritance({column: {type: 'varchar', name: 'type'}}) @TableInheritance({column: {type: 'varchar', name: 'type'}})
export abstract class MediaEntity implements MediaDTO { export abstract class MediaEntity implements MediaDTO {
@Index()
@PrimaryGeneratedColumn() @PrimaryGeneratedColumn()
id: number; id: number;
@Column('text') @Column('text')
name: string; name: string;
@Index()
@ManyToOne(type => DirectoryEntity, directory => directory.media, {onDelete: 'CASCADE'}) @ManyToOne(type => DirectoryEntity, directory => directory.media, {onDelete: 'CASCADE'})
directory: DirectoryEntity; directory: DirectoryEntity;

View File

@ -1,4 +1,5 @@
import * as fs from 'fs'; import * as fs from 'fs';
import {Stats} from 'fs';
import * as path from 'path'; import * as path from 'path';
import {DirectoryDTO} from '../../../common/entities/DirectoryDTO'; import {DirectoryDTO} from '../../../common/entities/DirectoryDTO';
import {PhotoDTO} from '../../../common/entities/PhotoDTO'; import {PhotoDTO} from '../../../common/entities/PhotoDTO';
@ -49,8 +50,17 @@ export class DiskMangerWorker {
return this.SupportedEXT.metaFile.indexOf(extension) !== -1; return this.SupportedEXT.metaFile.indexOf(extension) !== -1;
} }
public static calcLastModified(stat: Stats) {
return Math.max(stat.ctime.getTime(), stat.mtime.getTime());
}
public static normalizeDirPath(dirPath: string) {
return path.normalize(path.join('.' + path.sep, dirPath));
}
public static scanDirectory(relativeDirectoryName: string, maxPhotos: number = null, photosOnly: boolean = false): Promise<DirectoryDTO> { public static scanDirectory(relativeDirectoryName: string, maxPhotos: number = null, photosOnly: boolean = false): Promise<DirectoryDTO> {
return new Promise<DirectoryDTO>((resolve, reject) => { return new Promise<DirectoryDTO>((resolve, reject) => {
relativeDirectoryName = this.normalizeDirPath(relativeDirectoryName);
const directoryName = path.basename(relativeDirectoryName); const directoryName = path.basename(relativeDirectoryName);
const directoryParent = path.join(path.dirname(relativeDirectoryName), path.sep); const directoryParent = path.join(path.dirname(relativeDirectoryName), path.sep);
const absoluteDirectoryName = path.join(ProjectPath.ImageFolder, relativeDirectoryName); const absoluteDirectoryName = path.join(ProjectPath.ImageFolder, relativeDirectoryName);
@ -61,10 +71,11 @@ export class DiskMangerWorker {
parent: null, parent: null,
name: directoryName, name: directoryName,
path: directoryParent, path: directoryParent,
lastModified: Math.max(stat.ctime.getTime(), stat.mtime.getTime()), lastModified: this.calcLastModified(stat),
lastScanned: Date.now(), lastScanned: Date.now(),
directories: [], directories: [],
isPartial: false, isPartial: false,
mediaCount: 0,
media: [], media: [],
metaFile: [] metaFile: []
}; };
@ -114,6 +125,8 @@ export class DiskMangerWorker {
} }
} }
directory.mediaCount = directory.media.length;
return resolve(directory); return resolve(directory);
} catch (err) { } catch (err) {
return reject({error: err.toString()}); return reject({error: err.toString()});

View File

@ -1,5 +1,5 @@
import {AuthenticationMWs} from '../middlewares/user/AuthenticationMWs'; import {AuthenticationMWs} from '../middlewares/user/AuthenticationMWs';
import {Express} from 'express'; import {Express, NextFunction, Request, Response} from 'express';
import {GalleryMWs} from '../middlewares/GalleryMWs'; import {GalleryMWs} from '../middlewares/GalleryMWs';
import {RenderingMWs} from '../middlewares/RenderingMWs'; import {RenderingMWs} from '../middlewares/RenderingMWs';
import {ThumbnailGeneratorMWs} from '../middlewares/thumbnail/ThumbnailGeneratorMWs'; import {ThumbnailGeneratorMWs} from '../middlewares/thumbnail/ThumbnailGeneratorMWs';

View File

@ -1 +1 @@
export const DataStructureVersion = 5; export const DataStructureVersion = 7;

View File

@ -44,7 +44,7 @@ export class PrivateConfigClass extends PublicConfigClass implements IPrivateCon
indexing: { indexing: {
folderPreviewSize: 2, folderPreviewSize: 2,
cachedFolderTimeout: 1000 * 60 * 60, cachedFolderTimeout: 1000 * 60 * 60,
reIndexingSensitivity: ReIndexingSensitivity.medium reIndexingSensitivity: ReIndexingSensitivity.low
} }
}; };
private ConfigLoader: any; private ConfigLoader: any;

View File

@ -10,7 +10,8 @@ export interface DirectoryDTO {
lastScanned: number; lastScanned: number;
isPartial?: boolean; isPartial?: boolean;
parent: DirectoryDTO; parent: DirectoryDTO;
directories: Array<DirectoryDTO>; mediaCount: number;
directories: DirectoryDTO[];
media: MediaDTO[]; media: MediaDTO[];
metaFile: FileDTO[]; metaFile: FileDTO[];
} }

View File

@ -2,4 +2,8 @@ export interface IndexingProgressDTO {
indexed: number; indexed: number;
left: number; left: number;
current: string; current: string;
time: {
start: number,
current: number
};
} }

View File

@ -28,6 +28,7 @@ export class GalleryNavigatorComponent implements OnChanges {
sortingMethodsType: { key: number; value: string }[] = []; sortingMethodsType: { key: number; value: string }[] = [];
config = Config; config = Config;
DefaultSorting = Config.Client.Other.defaultPhotoSortingMethod; DefaultSorting = Config.Client.Other.defaultPhotoSortingMethod;
private readonly RootFolderName: string;
readonly SearchTypes = SearchTypes; readonly SearchTypes = SearchTypes;
@ -37,6 +38,7 @@ export class GalleryNavigatorComponent implements OnChanges {
private router: Router, private router: Router,
private i18n: I18n) { private i18n: I18n) {
this.sortingMethodsType = Utils.enumToArray(SortingMethods); this.sortingMethodsType = Utils.enumToArray(SortingMethods);
this.RootFolderName = this.i18n('Images');
} }
@ -67,9 +69,9 @@ export class GalleryNavigatorComponent implements OnChanges {
// create root link // create root link
if (dirs.length === 0) { if (dirs.length === 0) {
arr.push({name: this.i18n('Images'), route: null}); arr.push({name: this.RootFolderName, route: null});
} else { } else {
arr.push({name: this.i18n('Images'), route: UserDTO.isPathAvailable('/', user.permissions) ? '/' : null}); arr.push({name: this.RootFolderName, route: UserDTO.isPathAvailable('/', user.permissions) ? '/' : null});
} }
// create rest navigation // create rest navigation
@ -93,22 +95,23 @@ export class GalleryNavigatorComponent implements OnChanges {
} }
get ItemCount(): number { get ItemCount(): number {
return (this.directory || this.searchResult).media.length; return this.directory ? this.directory.mediaCount : this.searchResult.media.length;
} }
/*
@HostListener('window:keydown', ['$event']) /*
onKeyPress(e: KeyboardEvent) {
if (this.routes.length < 2) { @HostListener('window:keydown', ['$event'])
return; onKeyPress(e: KeyboardEvent) {
} if (this.routes.length < 2) {
const event: KeyboardEvent = window.event ? <any>window.event : e; return;
if (event.altKey === true && event.key === 'ArrowUp') { }
const path = this.routes[this.routes.length - 2]; const event: KeyboardEvent = window.event ? <any>window.event : e;
this.router.navigate(['/gallery', path.route], if (event.altKey === true && event.key === 'ArrowUp') {
{queryParams: this.queryService.getParams()}).catch(console.error); const path = this.routes[this.routes.length - 2];
} this.router.navigate(['/gallery', path.route],
}*/ {queryParams: this.queryService.getParams()}).catch(console.error);
}
}*/
} }
interface NavigatorPath { interface NavigatorPath {

View File

@ -6,3 +6,7 @@
.statics span.oi { .statics span.oi {
margin-right: 3px; margin-right: 3px;
} }
.progress-details{
font-weight: bold;
}

View File

@ -70,7 +70,9 @@
<div *ngIf="_settingsService.progress.value != null"> <div *ngIf="_settingsService.progress.value != null">
indexing: {{_settingsService.progress.value.current}} <span class="progress-details" i18n>indexing</span>: {{_settingsService.progress.value.current}} <br/>
<span class="progress-details" i18n>elapsed</span>: {{TimeElapsed | duration}}<br/>
<span class="progress-details" i18n>left</span>: {{TimeLeft | duration}}
<div class="progress"> <div class="progress">
<div class="progress-bar progress-bar-success" <div class="progress-bar progress-bar-success"
role="progressbar" role="progressbar"

View File

@ -119,6 +119,15 @@ export class IndexingSettingsComponent extends SettingsComponent<IndexingConfig,
return false; return false;
} }
get TimeLeft() {
const prg = this._settingsService.progress.value;
return (prg.time.current - prg.time.start) / prg.indexed * prg.left;
}
get TimeElapsed() {
const prg = this._settingsService.progress.value;
return (prg.time.current - prg.time.start);
}
async cancelIndexing() { async cancelIndexing() {
this.inProgress = true; this.inProgress = true;
this.error = ''; this.error = '';

View File

@ -685,7 +685,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">94</context> <context context-type="linenumber">91</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/other/other.settings.component.html</context> <context context-type="sourcefile">app/settings/other/other.settings.component.html</context>
@ -726,7 +726,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/other/other.settings.component.html</context> <context context-type="sourcefile">app/settings/other/other.settings.component.html</context>
@ -1036,7 +1036,7 @@
<source>Server will accept connections from this IPv6 or IPv4 address.</source> <source>Server will accept connections from this IPv6 or IPv4 address.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">30</context> <context context-type="linenumber">27</context>
</context-group> </context-group>
<target>Server will accept connections from this IPv6 or IPv4 address.</target> <target>Server will accept connections from this IPv6 or IPv4 address.</target>
</trans-unit> </trans-unit>
@ -1044,7 +1044,7 @@
<source>Port</source> <source>Port</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">32</context>
</context-group> </context-group>
<target>Port</target> <target>Port</target>
</trans-unit> </trans-unit>
@ -1052,7 +1052,7 @@
<source>Port number. Port 80 is usually what you need.</source> <source>Port number. Port 80 is usually what you need.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">44</context> <context context-type="linenumber">41</context>
</context-group> </context-group>
<target>Port number. Port 80 is usually what you need.</target> <target>Port number. Port 80 is usually what you need.</target>
</trans-unit> </trans-unit>
@ -1060,7 +1060,7 @@
<source>Images folder</source> <source>Images folder</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target>Images folder</target> <target>Images folder</target>
</trans-unit> </trans-unit>
@ -1068,7 +1068,7 @@
<source>Images are loaded from this folder (read permission required)</source> <source>Images are loaded from this folder (read permission required)</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">52</context>
</context-group> </context-group>
<target>Images are loaded from this folder (read permission required)</target> <target>Images are loaded from this folder (read permission required)</target>
</trans-unit> </trans-unit>
@ -1076,7 +1076,7 @@
<source>Page public url</source> <source>Page public url</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">57</context>
</context-group> </context-group>
<target>Page public url</target> <target>Page public url</target>
</trans-unit> </trans-unit>
@ -1086,7 +1086,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">64</context>
</context-group> </context-group>
<target>If you access the page form local network its good to know the public url for creating sharing link</target> <target>If you access the page form local network its good to know the public url for creating sharing link</target>
</trans-unit> </trans-unit>
@ -1094,7 +1094,7 @@
<source>Url Base</source> <source>Url Base</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">71</context>
</context-group> </context-group>
<target>Url Base</target> <target>Url Base</target>
</trans-unit> </trans-unit>
@ -1105,7 +1105,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
<target>If you access the gallery under a sub url (like: http://mydomain.com/myGallery), set it here. If not working you might miss the '/' from the beginning of the url.</target> <target>If you access the gallery under a sub url (like: http://mydomain.com/myGallery), set it here. If not working you might miss the '/' from the beginning of the url.</target>
</trans-unit> </trans-unit>
@ -1115,7 +1115,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
<target>The public url and the url base are not matching. Some of the functionality might not work.</target> <target>The public url and the url base are not matching. Some of the functionality might not work.</target>
</trans-unit> </trans-unit>
@ -1393,12 +1393,36 @@
</context-group> </context-group>
<target>Note: search only works among the indexed directories</target> <target>Note: search only works among the indexed directories</target>
</trans-unit> </trans-unit>
<trans-unit id="1ac5dc3858808c90bb5e7cbd0c3e5e4b342160f3" datatype="html">
<source>indexing</source>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">73</context>
</context-group>
<target>indexing</target>
</trans-unit>
<trans-unit id="adab6f78490c699b2fdf22f611d3dc8662a178a5" datatype="html">
<source>elapsed</source>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">74</context>
</context-group>
<target>elapsed</target>
</trans-unit>
<trans-unit id="478c0bf6552f7226e27bb5b57b8209a040ded2c6" datatype="html">
<source>left</source>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">75</context>
</context-group>
<target>left</target>
</trans-unit>
<trans-unit id="32cc8ef8dc6f4f239b7f637ac8adaecc55b8e1d8" datatype="html"> <trans-unit id="32cc8ef8dc6f4f239b7f637ac8adaecc55b8e1d8" datatype="html">
<source>Index <source>Index
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">94</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
<target>Index</target> <target>Index</target>
</trans-unit> </trans-unit>
@ -1406,7 +1430,7 @@
<source>Indexes the folders</source> <source>Indexes the folders</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
<target>Indexes the folders</target> <target>Indexes the folders</target>
</trans-unit> </trans-unit>
@ -1415,7 +1439,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
<target>Index with Thumbnails</target> <target>Index with Thumbnails</target>
</trans-unit> </trans-unit>
@ -1423,7 +1447,7 @@
<source>Indexes the folders and also creates the thumbnails</source> <source>Indexes the folders and also creates the thumbnails</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
<target>Indexes the folders and also creates the thumbnails</target> <target>Indexes the folders and also creates the thumbnails</target>
</trans-unit> </trans-unit>
@ -1432,7 +1456,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">108</context>
</context-group> </context-group>
<target>Cancel</target> <target>Cancel</target>
</trans-unit> </trans-unit>
@ -1441,7 +1465,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">110</context> <context context-type="linenumber">112</context>
</context-group> </context-group>
<target>Reset Indexes</target> <target>Reset Indexes</target>
</trans-unit> </trans-unit>
@ -1451,7 +1475,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target>Statistic:</target> <target>Statistic:</target>
</trans-unit> </trans-unit>
@ -1459,7 +1483,7 @@
<source>Folders</source> <source>Folders</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">119</context> <context context-type="linenumber">121</context>
</context-group> </context-group>
<target>Folders</target> <target>Folders</target>
</trans-unit> </trans-unit>
@ -1467,7 +1491,7 @@
<source>Photos</source> <source>Photos</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">125</context>
</context-group> </context-group>
<target>Photos</target> <target>Photos</target>
</trans-unit> </trans-unit>
@ -1475,7 +1499,7 @@
<source>Videos</source> <source>Videos</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target>Videos</target> <target>Videos</target>
</trans-unit> </trans-unit>
@ -1483,7 +1507,7 @@
<source>Size</source> <source>Size</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">132</context> <context context-type="linenumber">134</context>
</context-group> </context-group>
<target>Size</target> <target>Size</target>
</trans-unit> </trans-unit>

View File

@ -685,7 +685,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">94</context> <context context-type="linenumber">91</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/other/other.settings.component.html</context> <context context-type="sourcefile">app/settings/other/other.settings.component.html</context>
@ -726,7 +726,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/other/other.settings.component.html</context> <context context-type="sourcefile">app/settings/other/other.settings.component.html</context>
@ -1036,7 +1036,7 @@
<source>Server will accept connections from this IPv6 or IPv4 address.</source> <source>Server will accept connections from this IPv6 or IPv4 address.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">30</context> <context context-type="linenumber">27</context>
</context-group> </context-group>
<target>A szerver csak erről az (IPv6 vagy az IPv4) címből származó kapcsolatokat fog fogadni.</target> <target>A szerver csak erről az (IPv6 vagy az IPv4) címből származó kapcsolatokat fog fogadni.</target>
</trans-unit> </trans-unit>
@ -1044,7 +1044,7 @@
<source>Port</source> <source>Port</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">32</context>
</context-group> </context-group>
<target>Port</target> <target>Port</target>
</trans-unit> </trans-unit>
@ -1052,7 +1052,7 @@
<source>Port number. Port 80 is usually what you need.</source> <source>Port number. Port 80 is usually what you need.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">44</context> <context context-type="linenumber">41</context>
</context-group> </context-group>
<target>Portszám. A 80-as port általában az, amire szükséged van.</target> <target>Portszám. A 80-as port általában az, amire szükséged van.</target>
</trans-unit> </trans-unit>
@ -1060,7 +1060,7 @@
<source>Images folder</source> <source>Images folder</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target>Képek mappa</target> <target>Képek mappa</target>
</trans-unit> </trans-unit>
@ -1068,7 +1068,7 @@
<source>Images are loaded from this folder (read permission required)</source> <source>Images are loaded from this folder (read permission required)</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">52</context>
</context-group> </context-group>
<target>A képek ebből a mappából töltődnek be (olvasási engedély szükséges a mappára)</target> <target>A képek ebből a mappából töltődnek be (olvasási engedély szükséges a mappára)</target>
</trans-unit> </trans-unit>
@ -1076,7 +1076,7 @@
<source>Page public url</source> <source>Page public url</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">57</context>
</context-group> </context-group>
<target>Oldal nyilvános url-je</target> <target>Oldal nyilvános url-je</target>
</trans-unit> </trans-unit>
@ -1086,7 +1086,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">64</context>
</context-group> </context-group>
<target>Ha az oldalt a helyi hálózaton keresztül éred el, jó tudni a nyilvánosságot URL-t megosztási link létrehozásához</target> <target>Ha az oldalt a helyi hálózaton keresztül éred el, jó tudni a nyilvánosságot URL-t megosztási link létrehozásához</target>
</trans-unit> </trans-unit>
@ -1094,7 +1094,7 @@
<source>Url Base</source> <source>Url Base</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">71</context>
</context-group> </context-group>
<target>Al cím</target> <target>Al cím</target>
</trans-unit> </trans-unit>
@ -1105,7 +1105,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
<target>Ha a galériát egy al-url alatt érheti el (például: http://mydomain.com/myGallery), állítsa be itt. Ha nem működik, akkor hiányozhat a "/" a kezdetétől url.</target> <target>Ha a galériát egy al-url alatt érheti el (például: http://mydomain.com/myGallery), állítsa be itt. Ha nem működik, akkor hiányozhat a "/" a kezdetétől url.</target>
</trans-unit> </trans-unit>
@ -1115,7 +1115,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context> <context context-type="sourcefile">app/settings/basic/basic.settings.component.html</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
<target>A nyilvános url és az al url nem eggyeznek meg. Néhány funkció lehet hogy nem fog működni.</target> <target>A nyilvános url és az al url nem eggyeznek meg. Néhány funkció lehet hogy nem fog működni.</target>
</trans-unit> </trans-unit>
@ -1393,12 +1393,36 @@
</context-group> </context-group>
<target>Megjegyzés: csak az indexelt könyvtárak között működik a keresés</target> <target>Megjegyzés: csak az indexelt könyvtárak között működik a keresés</target>
</trans-unit> </trans-unit>
<trans-unit id="1ac5dc3858808c90bb5e7cbd0c3e5e4b342160f3" datatype="html">
<source>indexing</source>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">73</context>
</context-group>
<target>indexelés</target>
</trans-unit>
<trans-unit id="adab6f78490c699b2fdf22f611d3dc8662a178a5" datatype="html">
<source>elapsed</source>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">74</context>
</context-group>
<target>eltelt</target>
</trans-unit>
<trans-unit id="478c0bf6552f7226e27bb5b57b8209a040ded2c6" datatype="html">
<source>left</source>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">75</context>
</context-group>
<target>hátra</target>
</trans-unit>
<trans-unit id="32cc8ef8dc6f4f239b7f637ac8adaecc55b8e1d8" datatype="html"> <trans-unit id="32cc8ef8dc6f4f239b7f637ac8adaecc55b8e1d8" datatype="html">
<source>Index <source>Index
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">94</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
<target>Index</target> <target>Index</target>
</trans-unit> </trans-unit>
@ -1406,7 +1430,7 @@
<source>Indexes the folders</source> <source>Indexes the folders</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
<target>Indexeli a mappákat</target> <target>Indexeli a mappákat</target>
</trans-unit> </trans-unit>
@ -1415,7 +1439,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
<target>Index thumbnail-el</target> <target>Index thumbnail-el</target>
</trans-unit> </trans-unit>
@ -1423,7 +1447,7 @@
<source>Indexes the folders and also creates the thumbnails</source> <source>Indexes the folders and also creates the thumbnails</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
<target>Indexeli a mappákat és legenerálja a thumbnaileket is</target> <target>Indexeli a mappákat és legenerálja a thumbnaileket is</target>
</trans-unit> </trans-unit>
@ -1432,7 +1456,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">108</context>
</context-group> </context-group>
<target>Mégse</target> <target>Mégse</target>
</trans-unit> </trans-unit>
@ -1441,7 +1465,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">110</context> <context context-type="linenumber">112</context>
</context-group> </context-group>
<target>Indexek visszaállítása</target> <target>Indexek visszaállítása</target>
</trans-unit> </trans-unit>
@ -1451,7 +1475,7 @@
</source> </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target>Statisztika:</target> <target>Statisztika:</target>
</trans-unit> </trans-unit>
@ -1459,7 +1483,7 @@
<source>Folders</source> <source>Folders</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">119</context> <context context-type="linenumber">121</context>
</context-group> </context-group>
<target>Mappák</target> <target>Mappák</target>
</trans-unit> </trans-unit>
@ -1467,7 +1491,7 @@
<source>Photos</source> <source>Photos</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">125</context>
</context-group> </context-group>
<target>Fotók</target> <target>Fotók</target>
</trans-unit> </trans-unit>
@ -1475,7 +1499,7 @@
<source>Videos</source> <source>Videos</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target>Videók</target> <target>Videók</target>
</trans-unit> </trans-unit>
@ -1483,7 +1507,7 @@
<source>Size</source> <source>Size</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context> <context context-type="sourcefile">app/settings/indexing/indexing.settings.component.html</context>
<context context-type="linenumber">132</context> <context context-type="linenumber">134</context>
</context-group> </context-group>
<target>Méret</target> <target>Méret</target>
</trans-unit> </trans-unit>
@ -1513,7 +1537,7 @@
<context context-type="sourcefile">frontend/app/gallery/navigator/navigator.gallery.component.ts</context> <context context-type="sourcefile">frontend/app/gallery/navigator/navigator.gallery.component.ts</context>
<context context-type="linenumber">1</context> <context context-type="linenumber">1</context>
</context-group> </context-group>
<target>képek</target> <target>Képek</target>
</trans-unit> </trans-unit>
<trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html"> <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">
<source>Yes</source> <source>Yes</source>

View File

@ -63,6 +63,7 @@ describe('Typeorm integration', () => {
d.lastModified = Date.now(); d.lastModified = Date.now();
d.lastScanned = null; d.lastScanned = null;
d.parent = null; d.parent = null;
d.mediaCount = 0;
d.media = []; d.media = [];
d.directories = []; d.directories = [];
return d; return d;

View File

@ -22,6 +22,7 @@ export class TestHelper {
const dir = new DirectoryEntity(); const dir = new DirectoryEntity();
dir.name = 'wars dir'; dir.name = 'wars dir';
dir.path = '.'; dir.path = '.';
dir.mediaCount = 0;
dir.lastModified = Date.now(); dir.lastModified = Date.now();
dir.lastScanned = null; dir.lastScanned = null;
@ -68,6 +69,7 @@ export class TestHelper {
d.name = 'test media.jpg'; d.name = 'test media.jpg';
d.directory = dir; d.directory = dir;
d.metadata = m; d.metadata = m;
dir.mediaCount++;
return d; return d;
} }
@ -129,6 +131,7 @@ export class TestHelper {
id: null, id: null,
name: forceStr || Math.random().toString(36).substring(7), name: forceStr || Math.random().toString(36).substring(7),
path: '.', path: '.',
mediaCount: 0,
directories: [], directories: [],
metaFile: [], metaFile: [],
media: [], media: [],