mirror of
https://github.com/xuthus83/pigallery2.git
synced 2025-01-14 14:43:17 +08:00
renaming tasks to jobs
This commit is contained in:
parent
f8b06be700
commit
5ec9171ddf
@ -50,56 +50,56 @@ export class AdminMWs {
|
||||
}
|
||||
}
|
||||
|
||||
public static async startTask(req: Request, res: Response, next: NextFunction) {
|
||||
public static async startJob(req: Request, res: Response, next: NextFunction) {
|
||||
try {
|
||||
const id = req.params.id;
|
||||
const taskConfig: any = req.body.config;
|
||||
await ObjectManagers.getInstance().TaskManager.run(id, taskConfig);
|
||||
const JobConfig: any = req.body.config;
|
||||
await ObjectManagers.getInstance().JobManager.run(id, JobConfig);
|
||||
req.resultPipe = 'ok';
|
||||
return next();
|
||||
} catch (err) {
|
||||
if (err instanceof Error) {
|
||||
return next(new ErrorDTO(ErrorCodes.TASK_ERROR, 'Task error: ' + err.toString(), err));
|
||||
return next(new ErrorDTO(ErrorCodes.JOB_ERROR, 'Job error: ' + err.toString(), err));
|
||||
}
|
||||
return next(new ErrorDTO(ErrorCodes.TASK_ERROR, 'Task error: ' + JSON.stringify(err, null, ' '), err));
|
||||
return next(new ErrorDTO(ErrorCodes.JOB_ERROR, 'Job error: ' + JSON.stringify(err, null, ' '), err));
|
||||
}
|
||||
}
|
||||
|
||||
public static stopTask(req: Request, res: Response, next: NextFunction) {
|
||||
public static stopJob(req: Request, res: Response, next: NextFunction) {
|
||||
try {
|
||||
const id = req.params.id;
|
||||
ObjectManagers.getInstance().TaskManager.stop(id);
|
||||
ObjectManagers.getInstance().JobManager.stop(id);
|
||||
req.resultPipe = 'ok';
|
||||
return next();
|
||||
} catch (err) {
|
||||
if (err instanceof Error) {
|
||||
return next(new ErrorDTO(ErrorCodes.TASK_ERROR, 'Task error: ' + err.toString(), err));
|
||||
return next(new ErrorDTO(ErrorCodes.JOB_ERROR, 'Job error: ' + err.toString(), err));
|
||||
}
|
||||
return next(new ErrorDTO(ErrorCodes.TASK_ERROR, 'Task error: ' + JSON.stringify(err, null, ' '), err));
|
||||
return next(new ErrorDTO(ErrorCodes.JOB_ERROR, 'Job error: ' + JSON.stringify(err, null, ' '), err));
|
||||
}
|
||||
}
|
||||
|
||||
public static getAvailableTasks(req: Request, res: Response, next: NextFunction) {
|
||||
public static getAvailableJobs(req: Request, res: Response, next: NextFunction) {
|
||||
try {
|
||||
req.resultPipe = ObjectManagers.getInstance().TaskManager.getAvailableTasks();
|
||||
req.resultPipe = ObjectManagers.getInstance().JobManager.getAvailableJobs();
|
||||
return next();
|
||||
} catch (err) {
|
||||
if (err instanceof Error) {
|
||||
return next(new ErrorDTO(ErrorCodes.TASK_ERROR, 'Task error: ' + err.toString(), err));
|
||||
return next(new ErrorDTO(ErrorCodes.JOB_ERROR, 'Job error: ' + err.toString(), err));
|
||||
}
|
||||
return next(new ErrorDTO(ErrorCodes.TASK_ERROR, 'Task error: ' + JSON.stringify(err, null, ' '), err));
|
||||
return next(new ErrorDTO(ErrorCodes.JOB_ERROR, 'Job error: ' + JSON.stringify(err, null, ' '), err));
|
||||
}
|
||||
}
|
||||
|
||||
public static getTaskProgresses(req: Request, res: Response, next: NextFunction) {
|
||||
public static getJobProgresses(req: Request, res: Response, next: NextFunction) {
|
||||
try {
|
||||
req.resultPipe = ObjectManagers.getInstance().TaskManager.getProgresses();
|
||||
req.resultPipe = ObjectManagers.getInstance().JobManager.getProgresses();
|
||||
return next();
|
||||
} catch (err) {
|
||||
if (err instanceof Error) {
|
||||
return next(new ErrorDTO(ErrorCodes.TASK_ERROR, 'Task error: ' + err.toString(), err));
|
||||
return next(new ErrorDTO(ErrorCodes.JOB_ERROR, 'Job error: ' + err.toString(), err));
|
||||
}
|
||||
return next(new ErrorDTO(ErrorCodes.TASK_ERROR, 'Task error: ' + JSON.stringify(err, null, ' '), err));
|
||||
return next(new ErrorDTO(ErrorCodes.JOB_ERROR, 'Job error: ' + JSON.stringify(err, null, ' '), err));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -444,16 +444,16 @@ export class SettingsMWs {
|
||||
try {
|
||||
|
||||
// only updating explicitly set config (not saving config set by the diagnostics)
|
||||
const settings: ServerConfig.TaskConfig = req.body.settings;
|
||||
const settings: ServerConfig.JobConfig = req.body.settings;
|
||||
const original = Config.original();
|
||||
await ConfigDiagnostics.testTasksConfig(settings, original);
|
||||
|
||||
Config.Server.Tasks = settings;
|
||||
original.Server.Tasks = settings;
|
||||
Config.Server.Jobs = settings;
|
||||
original.Server.Jobs = settings;
|
||||
original.save();
|
||||
|
||||
await ConfigDiagnostics.runDiagnostics();
|
||||
ObjectManagers.getInstance().TaskManager.runSchedules();
|
||||
ObjectManagers.getInstance().JobManager.runSchedules();
|
||||
Logger.info(LOG_TAG, 'new config:');
|
||||
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
|
||||
return next();
|
||||
|
@ -7,7 +7,7 @@ import {Logger} from '../Logger';
|
||||
import {IIndexingManager} from './database/interfaces/IIndexingManager';
|
||||
import {IPersonManager} from './database/interfaces/IPersonManager';
|
||||
import {IVersionManager} from './database/interfaces/IVersionManager';
|
||||
import {ITaskManager} from './database/interfaces/ITaskManager';
|
||||
import {IJobManager} from './database/interfaces/IJobManager';
|
||||
|
||||
export class ObjectManagers {
|
||||
|
||||
@ -20,7 +20,7 @@ export class ObjectManagers {
|
||||
private _indexingManager: IIndexingManager;
|
||||
private _personManager: IPersonManager;
|
||||
private _versionManager: IVersionManager;
|
||||
private _taskManager: ITaskManager;
|
||||
private _jobManager: IJobManager;
|
||||
|
||||
|
||||
get VersionManager(): IVersionManager {
|
||||
@ -80,12 +80,12 @@ export class ObjectManagers {
|
||||
this._sharingManager = value;
|
||||
}
|
||||
|
||||
get TaskManager(): ITaskManager {
|
||||
return this._taskManager;
|
||||
get JobManager(): IJobManager {
|
||||
return this._jobManager;
|
||||
}
|
||||
|
||||
set TaskManager(value: ITaskManager) {
|
||||
this._taskManager = value;
|
||||
set JobManager(value: IJobManager) {
|
||||
this._jobManager = value;
|
||||
}
|
||||
|
||||
public static getInstance() {
|
||||
@ -96,8 +96,8 @@ export class ObjectManagers {
|
||||
}
|
||||
|
||||
public static async reset() {
|
||||
if (ObjectManagers.getInstance().TaskManager) {
|
||||
ObjectManagers.getInstance().TaskManager.stopSchedules();
|
||||
if (ObjectManagers.getInstance().JobManager) {
|
||||
ObjectManagers.getInstance().JobManager.stopSchedules();
|
||||
}
|
||||
await SQLConnection.close();
|
||||
this._instance = null;
|
||||
@ -105,8 +105,8 @@ export class ObjectManagers {
|
||||
|
||||
|
||||
public static async InitCommonManagers() {
|
||||
const TaskManager = require('./tasks/TaskManager').TaskManager;
|
||||
ObjectManagers.getInstance().TaskManager = new TaskManager();
|
||||
const JobManager = require('./jobs/JobManager').JobManager;
|
||||
ObjectManagers.getInstance().JobManager = new JobManager();
|
||||
}
|
||||
|
||||
public static async InitMemoryManagers() {
|
||||
|
18
src/backend/model/database/interfaces/IJobManager.ts
Normal file
18
src/backend/model/database/interfaces/IJobManager.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import {JobProgressDTO} from '../../../../common/entities/settings/JobProgressDTO';
|
||||
import {JobDTO} from '../../../../common/entities/job/JobDTO';
|
||||
|
||||
export interface IJobManager {
|
||||
|
||||
run(jobId: string, config: any): Promise<void>;
|
||||
|
||||
stop(jobId: string): void;
|
||||
|
||||
getProgresses(): { [key: string]: JobProgressDTO };
|
||||
|
||||
|
||||
getAvailableJobs(): JobDTO[];
|
||||
|
||||
stopSchedules(): void;
|
||||
|
||||
runSchedules(): void;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
import {TaskProgressDTO} from '../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {TaskDTO} from '../../../../common/entities/task/TaskDTO';
|
||||
|
||||
export interface ITaskManager {
|
||||
|
||||
run(taskId: string, config: any): Promise<void>;
|
||||
|
||||
stop(taskId: string): void;
|
||||
|
||||
getProgresses(): { [key: string]: TaskProgressDTO };
|
||||
|
||||
|
||||
getAvailableTasks(): TaskDTO[];
|
||||
|
||||
stopSchedules(): void;
|
||||
|
||||
runSchedules(): void;
|
||||
}
|
@ -158,7 +158,7 @@ export class ConfigDiagnostics {
|
||||
}
|
||||
|
||||
|
||||
static async testTasksConfig(task: ServerConfig.TaskConfig, config: IPrivateConfig) {
|
||||
static async testTasksConfig(task: ServerConfig.JobConfig, config: IPrivateConfig) {
|
||||
|
||||
}
|
||||
|
||||
@ -319,7 +319,7 @@ export class ConfigDiagnostics {
|
||||
|
||||
|
||||
try {
|
||||
await ConfigDiagnostics.testTasksConfig(Config.Server.Tasks, Config);
|
||||
await ConfigDiagnostics.testTasksConfig(Config.Server.Jobs, Config);
|
||||
} catch (ex) {
|
||||
const err: Error = ex;
|
||||
NotificationManager.warning('Some Tasks are not supported with these settings. Disabling temporally. ' +
|
||||
|
@ -1,26 +1,26 @@
|
||||
import {ITaskManager} from '../database/interfaces/ITaskManager';
|
||||
import {TaskProgressDTO} from '../../../common/entities/settings/TaskProgressDTO';
|
||||
import {ITask} from './tasks/ITask';
|
||||
import {TaskRepository} from './TaskRepository';
|
||||
import {IJobManager} from '../database/interfaces/IJobManager';
|
||||
import {JobProgressDTO} from '../../../common/entities/settings/JobProgressDTO';
|
||||
import {IJob} from './jobs/IJob';
|
||||
import {JobRepository} from './JobRepository';
|
||||
import {Config} from '../../../common/config/private/Config';
|
||||
import {TaskScheduleDTO, TaskTriggerType} from '../../../common/entities/task/TaskScheduleDTO';
|
||||
import {JobScheduleDTO, JobTriggerType} from '../../../common/entities/job/JobScheduleDTO';
|
||||
import {Logger} from '../../Logger';
|
||||
|
||||
declare var global: NodeJS.Global;
|
||||
|
||||
const LOG_TAG = '[TaskManager]';
|
||||
const LOG_TAG = '[JobManager]';
|
||||
|
||||
export class TaskManager implements ITaskManager {
|
||||
export class JobManager implements IJobManager {
|
||||
|
||||
protected timers: { schedule: TaskScheduleDTO, timer: NodeJS.Timeout }[] = [];
|
||||
protected timers: { schedule: JobScheduleDTO, timer: NodeJS.Timeout }[] = [];
|
||||
|
||||
constructor() {
|
||||
this.runSchedules();
|
||||
}
|
||||
|
||||
getProgresses(): { [id: string]: TaskProgressDTO } {
|
||||
const m: { [id: string]: TaskProgressDTO } = {};
|
||||
TaskRepository.Instance.getAvailableTasks()
|
||||
getProgresses(): { [id: string]: JobProgressDTO } {
|
||||
const m: { [id: string]: JobProgressDTO } = {};
|
||||
JobRepository.Instance.getAvailableJobs()
|
||||
.filter(t => t.Progress)
|
||||
.forEach(t => {
|
||||
t.Progress.time.current = Date.now();
|
||||
@ -29,29 +29,29 @@ export class TaskManager implements ITaskManager {
|
||||
return m;
|
||||
}
|
||||
|
||||
async run<T>(taskName: string, config: T): Promise<void> {
|
||||
const t = this.findTask(taskName);
|
||||
async run<T>(jobName: string, config: T): Promise<void> {
|
||||
const t = this.findJob(jobName);
|
||||
if (t) {
|
||||
await t.start(config);
|
||||
} else {
|
||||
Logger.warn(LOG_TAG, 'cannot find task to start:' + taskName);
|
||||
Logger.warn(LOG_TAG, 'cannot find job to start:' + jobName);
|
||||
}
|
||||
}
|
||||
|
||||
stop(taskName: string): void {
|
||||
const t = this.findTask(taskName);
|
||||
stop(jobName: string): void {
|
||||
const t = this.findJob(jobName);
|
||||
if (t) {
|
||||
t.stop();
|
||||
if (global.gc) {
|
||||
global.gc();
|
||||
}
|
||||
} else {
|
||||
Logger.warn(LOG_TAG, 'cannot find task to stop:' + taskName);
|
||||
Logger.warn(LOG_TAG, 'cannot find job to stop:' + jobName);
|
||||
}
|
||||
}
|
||||
|
||||
getAvailableTasks(): ITask<any>[] {
|
||||
return TaskRepository.Instance.getAvailableTasks();
|
||||
getAvailableJobs(): IJob<any>[] {
|
||||
return JobRepository.Instance.getAvailableJobs();
|
||||
}
|
||||
|
||||
public stopSchedules(): void {
|
||||
@ -61,8 +61,8 @@ export class TaskManager implements ITaskManager {
|
||||
|
||||
public runSchedules(): void {
|
||||
this.stopSchedules();
|
||||
Logger.info(LOG_TAG, 'Running task schedules');
|
||||
Config.Server.Tasks.scheduled.forEach(s => this.runSchedule(s));
|
||||
Logger.info(LOG_TAG, 'Running job schedules');
|
||||
Config.Server.Jobs.scheduled.forEach(s => this.runSchedule(s));
|
||||
}
|
||||
|
||||
protected getNextDayOfTheWeek(refDate: Date, dayOfWeek: number) {
|
||||
@ -89,12 +89,12 @@ export class TaskManager implements ITaskManager {
|
||||
return date;
|
||||
}
|
||||
|
||||
protected getDateFromSchedule(refDate: Date, schedule: TaskScheduleDTO): Date {
|
||||
protected getDateFromSchedule(refDate: Date, schedule: JobScheduleDTO): Date {
|
||||
switch (schedule.trigger.type) {
|
||||
case TaskTriggerType.scheduled:
|
||||
case JobTriggerType.scheduled:
|
||||
return new Date(schedule.trigger.time);
|
||||
|
||||
case TaskTriggerType.periodic:
|
||||
case JobTriggerType.periodic:
|
||||
|
||||
|
||||
const hour = Math.floor(schedule.trigger.atTime / 1000 / (60 * 60));
|
||||
@ -111,25 +111,25 @@ export class TaskManager implements ITaskManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected findTask<T = any>(taskName: string): ITask<T> {
|
||||
return this.getAvailableTasks().find(t => t.Name === taskName);
|
||||
protected findJob<T = any>(jobName: string): IJob<T> {
|
||||
return this.getAvailableJobs().find(t => t.Name === jobName);
|
||||
}
|
||||
|
||||
private runSchedule(schedule: TaskScheduleDTO) {
|
||||
private runSchedule(schedule: JobScheduleDTO) {
|
||||
const nextDate = this.getDateFromSchedule(new Date(), schedule);
|
||||
if (nextDate && nextDate.getTime() > Date.now()) {
|
||||
Logger.debug(LOG_TAG, 'running schedule: ' + schedule.taskName +
|
||||
Logger.debug(LOG_TAG, 'running schedule: ' + schedule.jobName +
|
||||
' at ' + nextDate.toLocaleString(undefined, {hour12: false}));
|
||||
|
||||
const timer: NodeJS.Timeout = setTimeout(async () => {
|
||||
this.timers = this.timers.filter(t => t.timer !== timer);
|
||||
await this.run(schedule.taskName, schedule.config);
|
||||
await this.run(schedule.jobName, schedule.config);
|
||||
this.runSchedule(schedule);
|
||||
}, nextDate.getTime() - Date.now());
|
||||
this.timers.push({schedule: schedule, timer: timer});
|
||||
|
||||
} else {
|
||||
Logger.debug(LOG_TAG, 'skipping schedule:' + schedule.taskName);
|
||||
Logger.debug(LOG_TAG, 'skipping schedule:' + schedule.jobName);
|
||||
}
|
||||
}
|
||||
|
34
src/backend/model/jobs/JobRepository.ts
Normal file
34
src/backend/model/jobs/JobRepository.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import {IJob} from './jobs/IJob';
|
||||
import {IndexingJob} from './jobs/IndexingJob';
|
||||
import {DBRestJob} from './jobs/DBResetJob';
|
||||
import {VideoConvertingJob} from './jobs/VideoConvertingJob';
|
||||
import {PhotoConvertingJob} from './jobs/PhotoConvertingJob';
|
||||
import {ThumbnailGenerationJob} from './jobs/ThumbnailGenerationJob';
|
||||
|
||||
export class JobRepository {
|
||||
|
||||
private static instance: JobRepository = null;
|
||||
availableJobs: { [key: string]: IJob<any> } = {};
|
||||
|
||||
public static get Instance(): JobRepository {
|
||||
if (JobRepository.instance == null) {
|
||||
JobRepository.instance = new JobRepository();
|
||||
}
|
||||
return JobRepository.instance;
|
||||
}
|
||||
|
||||
getAvailableJobs(): IJob<any>[] {
|
||||
return Object.values(this.availableJobs).filter(t => t.Supported);
|
||||
}
|
||||
|
||||
register(job: IJob<any>) {
|
||||
this.availableJobs[job.Name] = job;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
JobRepository.Instance.register(new IndexingJob());
|
||||
JobRepository.Instance.register(new DBRestJob());
|
||||
JobRepository.Instance.register(new VideoConvertingJob());
|
||||
JobRepository.Instance.register(new PhotoConvertingJob());
|
||||
JobRepository.Instance.register(new ThumbnailGenerationJob());
|
@ -1,14 +1,14 @@
|
||||
import {TaskProgressDTO} from '../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {JobProgressDTO} from '../../../../common/entities/settings/JobProgressDTO';
|
||||
import {ObjectManagers} from '../../ObjectManagers';
|
||||
import {Config} from '../../../../common/config/private/Config';
|
||||
import {ConfigTemplateEntry, DefaultsTasks} from '../../../../common/entities/task/TaskDTO';
|
||||
import {Task} from './Task';
|
||||
import {ConfigTemplateEntry, DefaultsJobs} from '../../../../common/entities/job/JobDTO';
|
||||
import {Job} from './Job';
|
||||
import {ServerConfig} from '../../../../common/config/private/IPrivateConfig';
|
||||
|
||||
const LOG_TAG = '[DBRestTask]';
|
||||
const LOG_TAG = '[DBRestJob]';
|
||||
|
||||
export class DBRestTask extends Task {
|
||||
public readonly Name = DefaultsTasks[DefaultsTasks['Database Reset']];
|
||||
export class DBRestJob extends Job {
|
||||
public readonly Name = DefaultsJobs[DefaultsJobs['Database Reset']];
|
||||
public readonly ConfigTemplate: ConfigTemplateEntry[] = null;
|
||||
protected readonly IsInstant = true;
|
||||
|
||||
@ -19,7 +19,7 @@ export class DBRestTask extends Task {
|
||||
protected async init() {
|
||||
}
|
||||
|
||||
protected async step(): Promise<TaskProgressDTO> {
|
||||
protected async step(): Promise<JobProgressDTO> {
|
||||
await ObjectManagers.getInstance().IndexingManager.resetDB();
|
||||
return null;
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
import {TaskProgressDTO, TaskState} from '../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {ConfigTemplateEntry} from '../../../../common/entities/task/TaskDTO';
|
||||
import {Task} from './Task';
|
||||
import {JobProgressDTO, JobState} from '../../../../common/entities/settings/JobProgressDTO';
|
||||
import {ConfigTemplateEntry} from '../../../../common/entities/job/JobDTO';
|
||||
import {Job} from './Job';
|
||||
import * as path from 'path';
|
||||
import {DiskManager} from '../../DiskManger';
|
||||
import {DiskMangerWorker} from '../../threading/DiskMangerWorker';
|
||||
@ -14,7 +14,7 @@ declare var global: NodeJS.Global;
|
||||
const LOG_TAG = '[FileTask]';
|
||||
|
||||
|
||||
export abstract class FileTask<T, S = void> extends Task<S> {
|
||||
export abstract class FileJob<T, S = void> extends Job<S> {
|
||||
public readonly ConfigTemplate: ConfigTemplateEntry[] = null;
|
||||
directoryQueue: string[] = [];
|
||||
fileQueue: T[] = [];
|
||||
@ -34,9 +34,9 @@ export abstract class FileTask<T, S = void> extends Task<S> {
|
||||
|
||||
protected abstract async processFile(file: T): Promise<void>;
|
||||
|
||||
protected async step(): Promise<TaskProgressDTO> {
|
||||
protected async step(): Promise<JobProgressDTO> {
|
||||
if ((this.directoryQueue.length === 0 && this.fileQueue.length === 0)
|
||||
|| this.state !== TaskState.running) {
|
||||
|| this.state !== JobState.running) {
|
||||
if (global.gc) {
|
||||
global.gc();
|
||||
}
|
14
src/backend/model/jobs/jobs/IJob.ts
Normal file
14
src/backend/model/jobs/jobs/IJob.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import {JobProgressDTO} from '../../../../common/entities/settings/JobProgressDTO';
|
||||
import {JobDTO} from '../../../../common/entities/job/JobDTO';
|
||||
|
||||
export interface IJob<T> extends JobDTO {
|
||||
Name: string;
|
||||
Supported: boolean;
|
||||
Progress: JobProgressDTO;
|
||||
|
||||
start(config: T): Promise<void>;
|
||||
|
||||
stop(): void;
|
||||
|
||||
toJSON(): JobDTO;
|
||||
}
|
@ -1,16 +1,16 @@
|
||||
import {TaskProgressDTO, TaskState} from '../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {JobProgressDTO, JobState} from '../../../../common/entities/settings/JobProgressDTO';
|
||||
import {ObjectManagers} from '../../ObjectManagers';
|
||||
import * as path from 'path';
|
||||
import {Config} from '../../../../common/config/private/Config';
|
||||
import {Task} from './Task';
|
||||
import {ConfigTemplateEntry, DefaultsTasks} from '../../../../common/entities/task/TaskDTO';
|
||||
import {Job} from './Job';
|
||||
import {ConfigTemplateEntry, DefaultsJobs} from '../../../../common/entities/job/JobDTO';
|
||||
import {ServerConfig} from '../../../../common/config/private/IPrivateConfig';
|
||||
|
||||
declare var global: NodeJS.Global;
|
||||
const LOG_TAG = '[IndexingTask]';
|
||||
const LOG_TAG = '[IndexingJob]';
|
||||
|
||||
export class IndexingTask extends Task {
|
||||
public readonly Name = DefaultsTasks[DefaultsTasks.Indexing];
|
||||
export class IndexingJob extends Job {
|
||||
public readonly Name = DefaultsJobs[DefaultsJobs.Indexing];
|
||||
directoriesToIndex: string[] = [];
|
||||
public readonly ConfigTemplate: ConfigTemplateEntry[] = null;
|
||||
|
||||
@ -23,7 +23,7 @@ export class IndexingTask extends Task {
|
||||
this.directoriesToIndex.push('/');
|
||||
}
|
||||
|
||||
protected async step(): Promise<TaskProgressDTO> {
|
||||
protected async step(): Promise<JobProgressDTO> {
|
||||
if (this.directoriesToIndex.length === 0) {
|
||||
if (global.gc) {
|
||||
global.gc();
|
||||
@ -34,7 +34,7 @@ export class IndexingTask extends Task {
|
||||
this.progress.comment = directory;
|
||||
this.progress.left = this.directoriesToIndex.length;
|
||||
const scanned = await ObjectManagers.getInstance().IndexingManager.indexDirectory(directory);
|
||||
if (this.state !== TaskState.running) {
|
||||
if (this.state !== JobState.running) {
|
||||
return null;
|
||||
}
|
||||
this.progress.progress++;
|
@ -1,14 +1,16 @@
|
||||
import {TaskProgressDTO, TaskState} from '../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {JobProgressDTO, JobState} from '../../../../common/entities/settings/JobProgressDTO';
|
||||
import {Logger} from '../../../Logger';
|
||||
import {ITask} from './ITask';
|
||||
import {ConfigTemplateEntry, TaskDTO} from '../../../../common/entities/task/TaskDTO';
|
||||
import {IJob} from './IJob';
|
||||
import {ConfigTemplateEntry, JobDTO} from '../../../../common/entities/job/JobDTO';
|
||||
|
||||
declare const process: any;
|
||||
|
||||
export abstract class Task<T = void> implements ITask<T> {
|
||||
const LOG_TAG = '[JOB]';
|
||||
|
||||
protected progress: TaskProgressDTO = null;
|
||||
protected state = TaskState.idle;
|
||||
export abstract class Job<T = void> implements IJob<T> {
|
||||
|
||||
protected progress: JobProgressDTO = null;
|
||||
protected state = JobState.idle;
|
||||
protected config: T;
|
||||
protected prResolve: () => void;
|
||||
protected IsInstant = false;
|
||||
@ -22,19 +24,19 @@ export abstract class Task<T = void> implements ITask<T> {
|
||||
public abstract get ConfigTemplate(): ConfigTemplateEntry[];
|
||||
|
||||
|
||||
public get Progress(): TaskProgressDTO {
|
||||
public get Progress(): JobProgressDTO {
|
||||
return this.progress;
|
||||
}
|
||||
|
||||
public start(config: T): Promise<void> {
|
||||
if (this.state === TaskState.idle && this.Supported) {
|
||||
Logger.info('[Task]', 'Running task: ' + this.Name);
|
||||
if (this.state === JobState.idle && this.Supported) {
|
||||
Logger.info(LOG_TAG, 'Running job: ' + this.Name);
|
||||
this.config = config;
|
||||
this.progress = {
|
||||
progress: 0,
|
||||
left: 0,
|
||||
comment: '',
|
||||
state: TaskState.running,
|
||||
state: JobState.running,
|
||||
time: {
|
||||
start: Date.now(),
|
||||
current: Date.now()
|
||||
@ -44,38 +46,38 @@ export abstract class Task<T = void> implements ITask<T> {
|
||||
this.prResolve = resolve;
|
||||
});
|
||||
this.init().catch(console.error);
|
||||
this.state = TaskState.running;
|
||||
this.state = JobState.running;
|
||||
this.run();
|
||||
if (!this.IsInstant) { // if instant, wait for execution, otherwise, return right away
|
||||
return Promise.resolve();
|
||||
}
|
||||
return pr;
|
||||
} else {
|
||||
Logger.info('[Task]', 'Task already running: ' + this.Name);
|
||||
Logger.info(LOG_TAG, 'Job already running: ' + this.Name);
|
||||
return Promise.reject();
|
||||
}
|
||||
}
|
||||
|
||||
public stop(): void {
|
||||
Logger.info('[Task]', 'Stopping task: ' + this.Name);
|
||||
this.state = TaskState.stopping;
|
||||
this.progress.state = TaskState.stopping;
|
||||
Logger.info(LOG_TAG, 'Stopping job: ' + this.Name);
|
||||
this.state = JobState.stopping;
|
||||
this.progress.state = JobState.stopping;
|
||||
}
|
||||
|
||||
public toJSON(): TaskDTO {
|
||||
public toJSON(): JobDTO {
|
||||
return {
|
||||
Name: this.Name,
|
||||
ConfigTemplate: this.ConfigTemplate
|
||||
};
|
||||
}
|
||||
|
||||
protected abstract async step(): Promise<TaskProgressDTO>;
|
||||
protected abstract async step(): Promise<JobProgressDTO>;
|
||||
|
||||
protected abstract async init(): Promise<void>;
|
||||
|
||||
private onFinish(): void {
|
||||
this.progress = null;
|
||||
Logger.info('[Task]', 'Task finished: ' + this.Name);
|
||||
Logger.info(LOG_TAG, 'Job finished: ' + this.Name);
|
||||
if (this.IsInstant) {
|
||||
this.prResolve();
|
||||
}
|
||||
@ -84,19 +86,19 @@ export abstract class Task<T = void> implements ITask<T> {
|
||||
private run() {
|
||||
process.nextTick(async () => {
|
||||
try {
|
||||
if (this.state === TaskState.idle) {
|
||||
if (this.state === JobState.idle) {
|
||||
this.progress = null;
|
||||
return;
|
||||
}
|
||||
this.progress = await this.step();
|
||||
if (this.progress == null) { // finished
|
||||
this.state = TaskState.idle;
|
||||
this.state = JobState.idle;
|
||||
this.onFinish();
|
||||
return;
|
||||
}
|
||||
this.run();
|
||||
} catch (e) {
|
||||
Logger.error('[Task]', e);
|
||||
Logger.error(LOG_TAG, e);
|
||||
}
|
||||
});
|
||||
}
|
@ -1,20 +1,19 @@
|
||||
import {Config} from '../../../../common/config/private/Config';
|
||||
import {DefaultsTasks} from '../../../../common/entities/task/TaskDTO';
|
||||
import {DefaultsJobs} from '../../../../common/entities/job/JobDTO';
|
||||
import {ProjectPath} from '../../../ProjectPath';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import * as util from 'util';
|
||||
import {FileTask} from './FileTask';
|
||||
import {FileJob} from './FileJob';
|
||||
import {DirectoryDTO} from '../../../../common/entities/DirectoryDTO';
|
||||
import {PhotoProcessing} from '../../fileprocessing/PhotoProcessing';
|
||||
import {ThumbnailSourceType} from '../../threading/ThumbnailWorker';
|
||||
|
||||
const LOG_TAG = '[PhotoConvertingTask]';
|
||||
const LOG_TAG = '[PhotoConvertingJob]';
|
||||
const existsPr = util.promisify(fs.exists);
|
||||
|
||||
|
||||
export class PhotoConvertingTask extends FileTask<string> {
|
||||
public readonly Name = DefaultsTasks[DefaultsTasks['Photo Converting']];
|
||||
export class PhotoConvertingJob extends FileJob<string> {
|
||||
public readonly Name = DefaultsJobs[DefaultsJobs['Photo Converting']];
|
||||
|
||||
constructor() {
|
||||
super({noVideo: true, noMetaFile: true});
|
@ -1,21 +1,21 @@
|
||||
import {Config} from '../../../../common/config/private/Config';
|
||||
import {ConfigTemplateEntry, DefaultsTasks} from '../../../../common/entities/task/TaskDTO';
|
||||
import {ConfigTemplateEntry, DefaultsJobs} from '../../../../common/entities/job/JobDTO';
|
||||
import {ProjectPath} from '../../../ProjectPath';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import * as util from 'util';
|
||||
import {FileTask} from './FileTask';
|
||||
import {FileJob} from './FileJob';
|
||||
import {DirectoryDTO} from '../../../../common/entities/DirectoryDTO';
|
||||
import {PhotoProcessing} from '../../fileprocessing/PhotoProcessing';
|
||||
import {ThumbnailSourceType} from '../../threading/ThumbnailWorker';
|
||||
import {MediaDTO} from '../../../../common/entities/MediaDTO';
|
||||
|
||||
const LOG_TAG = '[ThumbnailGenerationTask]';
|
||||
const LOG_TAG = '[ThumbnailGenerationJob]';
|
||||
const existsPr = util.promisify(fs.exists);
|
||||
|
||||
|
||||
export class ThumbnailGenerationTask extends FileTask<MediaDTO, { sizes: number[] }> {
|
||||
public readonly Name = DefaultsTasks[DefaultsTasks['Thumbnail Generation']];
|
||||
export class ThumbnailGenerationJob extends FileJob<MediaDTO, { sizes: number[] }> {
|
||||
public readonly Name = DefaultsJobs[DefaultsJobs['Thumbnail Generation']];
|
||||
public readonly ConfigTemplate: ConfigTemplateEntry[] = [{
|
||||
id: 'sizes',
|
||||
type: 'number-array',
|
@ -1,19 +1,19 @@
|
||||
import {Config} from '../../../../common/config/private/Config';
|
||||
import {DefaultsTasks} from '../../../../common/entities/task/TaskDTO';
|
||||
import {DefaultsJobs} from '../../../../common/entities/job/JobDTO';
|
||||
import {ProjectPath} from '../../../ProjectPath';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import * as util from 'util';
|
||||
import {FileTask} from './FileTask';
|
||||
import {FileJob} from './FileJob';
|
||||
import {DirectoryDTO} from '../../../../common/entities/DirectoryDTO';
|
||||
import {VideoProcessing} from '../../fileprocessing/VideoProcessing';
|
||||
|
||||
const LOG_TAG = '[VideoConvertingTask]';
|
||||
const LOG_TAG = '[VideoConvertingJob]';
|
||||
const existsPr = util.promisify(fs.exists);
|
||||
|
||||
|
||||
export class VideoConvertingTask extends FileTask<string> {
|
||||
public readonly Name = DefaultsTasks[DefaultsTasks['Video Converting']];
|
||||
export class VideoConvertingJob extends FileJob<string> {
|
||||
public readonly Name = DefaultsJobs[DefaultsJobs['Video Converting']];
|
||||
|
||||
constructor() {
|
||||
super({noPhoto: true, noMetaFile: true});
|
@ -1,34 +0,0 @@
|
||||
import {ITask} from './tasks/ITask';
|
||||
import {IndexingTask} from './tasks/IndexingTask';
|
||||
import {DBRestTask} from './tasks/DBResetTask';
|
||||
import {VideoConvertingTask} from './tasks/VideoConvertingTask';
|
||||
import {PhotoConvertingTask} from './tasks/PhotoConvertingTask';
|
||||
import {ThumbnailGenerationTask} from './tasks/ThumbnailGenerationTask';
|
||||
|
||||
export class TaskRepository {
|
||||
|
||||
private static instance: TaskRepository = null;
|
||||
availableTasks: { [key: string]: ITask<any> } = {};
|
||||
|
||||
public static get Instance(): TaskRepository {
|
||||
if (TaskRepository.instance == null) {
|
||||
TaskRepository.instance = new TaskRepository();
|
||||
}
|
||||
return TaskRepository.instance;
|
||||
}
|
||||
|
||||
getAvailableTasks(): ITask<any>[] {
|
||||
return Object.values(this.availableTasks).filter(t => t.Supported);
|
||||
}
|
||||
|
||||
register(task: ITask<any>) {
|
||||
this.availableTasks[task.Name] = task;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TaskRepository.Instance.register(new IndexingTask());
|
||||
TaskRepository.Instance.register(new DBRestTask());
|
||||
TaskRepository.Instance.register(new VideoConvertingTask());
|
||||
TaskRepository.Instance.register(new PhotoConvertingTask());
|
||||
TaskRepository.Instance.register(new ThumbnailGenerationTask());
|
@ -1,14 +0,0 @@
|
||||
import {TaskProgressDTO} from '../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {TaskDTO} from '../../../../common/entities/task/TaskDTO';
|
||||
|
||||
export interface ITask<T> extends TaskDTO {
|
||||
Name: string;
|
||||
Supported: boolean;
|
||||
Progress: TaskProgressDTO;
|
||||
|
||||
start(config: T): Promise<void>;
|
||||
|
||||
stop(): void;
|
||||
|
||||
toJSON(): TaskDTO;
|
||||
}
|
@ -11,7 +11,7 @@ import {MetadataLoader} from './MetadataLoader';
|
||||
import {Logger} from '../../Logger';
|
||||
import {SupportedFormats} from '../../../common/SupportedFormats';
|
||||
|
||||
const LOG_TAG = '[DiskManagerTask]';
|
||||
const LOG_TAG = '[DiskMangerWorker]';
|
||||
|
||||
|
||||
export class DiskMangerWorker {
|
||||
|
@ -9,7 +9,7 @@ export class AdminRouter {
|
||||
|
||||
this.addGetStatistic(app);
|
||||
this.addGetDuplicates(app);
|
||||
this.addTasks(app);
|
||||
this.addJobs(app);
|
||||
}
|
||||
|
||||
private static addGetStatistic(app: Express) {
|
||||
@ -30,29 +30,29 @@ export class AdminRouter {
|
||||
);
|
||||
}
|
||||
|
||||
private static addTasks(app: Express) {
|
||||
app.get('/api/admin/tasks/available',
|
||||
private static addJobs(app: Express) {
|
||||
app.get('/api/admin/jobs/available',
|
||||
AuthenticationMWs.authenticate,
|
||||
AuthenticationMWs.authorise(UserRoles.Admin),
|
||||
AdminMWs.getAvailableTasks,
|
||||
AdminMWs.getAvailableJobs,
|
||||
RenderingMWs.renderResult
|
||||
);
|
||||
app.get('/api/admin/tasks/scheduled/progress',
|
||||
app.get('/api/admin/jobs/scheduled/progress',
|
||||
AuthenticationMWs.authenticate,
|
||||
AuthenticationMWs.authorise(UserRoles.Admin),
|
||||
AdminMWs.getTaskProgresses,
|
||||
AdminMWs.getJobProgresses,
|
||||
RenderingMWs.renderResult
|
||||
);
|
||||
app.post('/api/admin/tasks/scheduled/:id/start',
|
||||
app.post('/api/admin/jobs/scheduled/:id/start',
|
||||
AuthenticationMWs.authenticate,
|
||||
AuthenticationMWs.authorise(UserRoles.Admin),
|
||||
AdminMWs.startTask,
|
||||
AdminMWs.startJob,
|
||||
RenderingMWs.renderResult
|
||||
);
|
||||
app.post('/api/admin/tasks/scheduled/:id/stop',
|
||||
app.post('/api/admin/jobs/scheduled/:id/stop',
|
||||
AuthenticationMWs.authenticate,
|
||||
AuthenticationMWs.authorise(UserRoles.Admin),
|
||||
AdminMWs.stopTask,
|
||||
AdminMWs.stopJob,
|
||||
RenderingMWs.renderResult
|
||||
);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import {ClientConfig} from '../public/ConfigClass';
|
||||
import {TaskScheduleDTO} from '../../entities/task/TaskScheduleDTO';
|
||||
import {JobScheduleDTO} from '../../entities/job/JobScheduleDTO';
|
||||
|
||||
export module ServerConfig {
|
||||
export enum DatabaseType {
|
||||
@ -77,8 +77,8 @@ export module ServerConfig {
|
||||
sqlLevel: SQLLogLevel;
|
||||
}
|
||||
|
||||
export interface TaskConfig {
|
||||
scheduled: TaskScheduleDTO[];
|
||||
export interface JobConfig {
|
||||
scheduled: JobScheduleDTO[];
|
||||
}
|
||||
|
||||
export type codecType = 'libvpx-vp9' | 'libx264' | 'libvpx' | 'libx265';
|
||||
@ -125,7 +125,7 @@ export module ServerConfig {
|
||||
photoMetadataSize: number; // only this many bites will be loaded when scanning photo for metadata
|
||||
Duplicates: DuplicatesConfig;
|
||||
Log: LogConfig;
|
||||
Tasks: TaskConfig;
|
||||
Jobs: JobConfig;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import {PublicConfigClass} from '../public/ConfigClass';
|
||||
import {IPrivateConfig, ServerConfig} from './IPrivateConfig';
|
||||
import {TaskTriggerType} from '../../entities/task/TaskScheduleDTO';
|
||||
import {DefaultsTasks} from '../../entities/task/TaskDTO';
|
||||
import {JobTriggerType} from '../../entities/job/JobScheduleDTO';
|
||||
import {DefaultsJobs} from '../../entities/job/JobDTO';
|
||||
|
||||
/**
|
||||
* This configuration will be only at backend
|
||||
@ -74,19 +74,19 @@ export class PrivateConfigDefaultsClass extends PublicConfigClass implements IPr
|
||||
Duplicates: {
|
||||
listingLimit: 1000
|
||||
},
|
||||
Tasks: {
|
||||
Jobs: {
|
||||
scheduled: [{
|
||||
taskName: DefaultsTasks[DefaultsTasks['Database Reset']],
|
||||
jobName: DefaultsJobs[DefaultsJobs['Database Reset']],
|
||||
config: {},
|
||||
trigger: {type: TaskTriggerType.never}
|
||||
trigger: {type: JobTriggerType.never}
|
||||
}, {
|
||||
taskName: DefaultsTasks[DefaultsTasks.Indexing],
|
||||
jobName: DefaultsJobs[DefaultsJobs.Indexing],
|
||||
config: {},
|
||||
trigger: {type: TaskTriggerType.never}
|
||||
trigger: {type: JobTriggerType.never}
|
||||
}, {
|
||||
taskName: DefaultsTasks[DefaultsTasks['Video Converting']],
|
||||
jobName: DefaultsJobs[DefaultsJobs['Video Converting']],
|
||||
config: {},
|
||||
trigger: {type: TaskTriggerType.never}
|
||||
trigger: {type: JobTriggerType.never}
|
||||
}]
|
||||
}
|
||||
};
|
||||
|
@ -19,7 +19,8 @@ export enum ErrorCodes {
|
||||
INPUT_ERROR = 12,
|
||||
|
||||
SETTINGS_ERROR = 13,
|
||||
TASK_ERROR = 14
|
||||
TASK_ERROR = 14,
|
||||
JOB_ERROR = 15
|
||||
}
|
||||
|
||||
export class ErrorDTO {
|
||||
|
@ -1,7 +1,7 @@
|
||||
export type fieldType = 'string' | 'number' | 'boolean' | 'number-array';
|
||||
|
||||
|
||||
export enum DefaultsTasks {
|
||||
export enum DefaultsJobs {
|
||||
Indexing = 1, 'Database Reset' = 2, 'Video Converting' = 3, 'Photo Converting' = 4, 'Thumbnail Generation' = 5
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ export interface ConfigTemplateEntry {
|
||||
defaultValue: any;
|
||||
}
|
||||
|
||||
export interface TaskDTO {
|
||||
export interface JobDTO {
|
||||
Name: string;
|
||||
ConfigTemplate: ConfigTemplateEntry[];
|
||||
}
|
28
src/common/entities/job/JobScheduleDTO.ts
Normal file
28
src/common/entities/job/JobScheduleDTO.ts
Normal file
@ -0,0 +1,28 @@
|
||||
export enum JobTriggerType {
|
||||
never = 1, scheduled = 2, periodic = 3
|
||||
}
|
||||
|
||||
export interface JobTrigger {
|
||||
type: JobTriggerType;
|
||||
}
|
||||
|
||||
export interface NeverJobTrigger {
|
||||
type: JobTriggerType.never;
|
||||
}
|
||||
|
||||
export interface ScheduledJobTrigger extends JobTrigger {
|
||||
type: JobTriggerType.scheduled;
|
||||
time: number; // data time
|
||||
}
|
||||
|
||||
export interface PeriodicJobTrigger extends JobTrigger {
|
||||
type: JobTriggerType.periodic;
|
||||
periodicity: number; // 0-6: week days 7 every day
|
||||
atTime: number; // day time
|
||||
}
|
||||
|
||||
export interface JobScheduleDTO {
|
||||
jobName: string;
|
||||
config: any;
|
||||
trigger: NeverJobTrigger | ScheduledJobTrigger | PeriodicJobTrigger;
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
export enum TaskState {
|
||||
export enum JobState {
|
||||
idle = 1, running = 2, stopping = 3
|
||||
}
|
||||
|
||||
|
||||
export interface TaskProgressDTO {
|
||||
export interface JobProgressDTO {
|
||||
progress: number;
|
||||
left: number;
|
||||
state: TaskState;
|
||||
state: JobState;
|
||||
comment: string;
|
||||
time: {
|
||||
start: number,
|
@ -1,28 +0,0 @@
|
||||
export enum TaskTriggerType {
|
||||
never = 1, scheduled = 2, periodic = 3
|
||||
}
|
||||
|
||||
export interface TaskTrigger {
|
||||
type: TaskTriggerType;
|
||||
}
|
||||
|
||||
export interface NeverTaskTrigger {
|
||||
type: TaskTriggerType.never;
|
||||
}
|
||||
|
||||
export interface ScheduledTaskTrigger extends TaskTrigger {
|
||||
type: TaskTriggerType.scheduled;
|
||||
time: number; // data time
|
||||
}
|
||||
|
||||
export interface PeriodicTaskTrigger extends TaskTrigger {
|
||||
type: TaskTriggerType.periodic;
|
||||
periodicity: number; // 0-6: week days 7 every day
|
||||
atTime: number; // day time
|
||||
}
|
||||
|
||||
export interface TaskScheduleDTO {
|
||||
taskName: string;
|
||||
config: any;
|
||||
trigger: NeverTaskTrigger | ScheduledTaskTrigger | PeriodicTaskTrigger;
|
||||
}
|
@ -81,14 +81,13 @@ import {VersionService} from './model/version.service';
|
||||
import {DirectoriesComponent} from './ui/gallery/directories/directories.component';
|
||||
import {ControlsLightboxComponent} from './ui/gallery/lightbox/controls/controls.lightbox.gallery.component';
|
||||
import {FacesSettingsComponent} from './ui/settings/faces/faces.settings.component';
|
||||
import {TasksSettingsComponent} from './ui/settings/tasks/tasks.settings.component';
|
||||
import {ScheduledTasksService} from './ui/settings/scheduled-tasks.service';
|
||||
import {TimepickerModule} from 'ngx-bootstrap/timepicker';
|
||||
import {TimeStampDatePickerComponent} from './ui/utils/timestamp-datepicker/datepicker.component';
|
||||
import {TimeStampTimePickerComponent} from './ui/utils/timestamp-timepicker/timepicker.component';
|
||||
import {TasksProgressComponent} from './ui/settings/tasks/progress/progress.tasks.settings.component';
|
||||
import {PhotoSettingsComponent} from './ui/settings/photo/photo.settings.component';
|
||||
|
||||
import {JobProgressComponent} from './ui/settings/jobs/progress/job-progress.settings.component';
|
||||
import {JobsSettingsComponent} from './ui/settings/jobs/jobs.settings.component';
|
||||
import {ScheduledJobsService} from './ui/settings/scheduled-jobs.service';
|
||||
|
||||
|
||||
@Injectable()
|
||||
@ -198,8 +197,8 @@ export function translationsFactory(locale: string) {
|
||||
FacesSettingsComponent,
|
||||
OtherSettingsComponent,
|
||||
IndexingSettingsComponent,
|
||||
TasksProgressComponent,
|
||||
TasksSettingsComponent,
|
||||
JobProgressComponent,
|
||||
JobsSettingsComponent,
|
||||
// Pipes
|
||||
StringifyRole,
|
||||
IconizeSortingMethod,
|
||||
@ -230,7 +229,7 @@ export function translationsFactory(locale: string) {
|
||||
DuplicateService,
|
||||
FacesService,
|
||||
VersionService,
|
||||
ScheduledTasksService,
|
||||
ScheduledJobsService,
|
||||
{
|
||||
provide: TRANSLATIONS,
|
||||
useFactory: translationsFactory,
|
||||
|
@ -105,9 +105,9 @@
|
||||
<app-settings-indexing #setting #indexing
|
||||
[hidden]="!indexing.HasAvailableSettings"
|
||||
[simplifiedMode]="simplifiedMode"></app-settings-indexing>
|
||||
<app-settings-tasks #setting #tasks
|
||||
[hidden]="!tasks.HasAvailableSettings"
|
||||
[simplifiedMode]="simplifiedMode"></app-settings-tasks>
|
||||
<app-settings-jobs #setting #jobs
|
||||
[hidden]="!jobs.HasAvailableSettings"
|
||||
[simplifiedMode]="simplifiedMode"></app-settings-jobs>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -108,7 +108,7 @@
|
||||
|
||||
|
||||
<div *ngIf="Progress != null">
|
||||
<app-settings-tasks-progress [progress]="Progress"></app-settings-tasks-progress>
|
||||
<app-settings-job-progress [progress]="Progress"></app-settings-job-progress>
|
||||
</div>
|
||||
|
||||
|
||||
@ -123,7 +123,7 @@
|
||||
</button>
|
||||
<button class="btn btn-secondary ml-0"
|
||||
*ngIf="Progress != null"
|
||||
[disabled]="inProgress || Progress.state !== TaskState.running"
|
||||
[disabled]="inProgress || Progress.state !== JobState.running"
|
||||
(click)="cancelIndexing()" i18n>Cancel converting
|
||||
</button>
|
||||
<button class="btn btn-danger ml-2"
|
||||
|
@ -7,10 +7,10 @@ import {ErrorDTO} from '../../../../../common/entities/Error';
|
||||
import {SettingsComponent} from '../_abstract/abstract.settings.component';
|
||||
import {Utils} from '../../../../../common/Utils';
|
||||
import {I18n} from '@ngx-translate/i18n-polyfill';
|
||||
import {ScheduledTasksService} from '../scheduled-tasks.service';
|
||||
import {DefaultsTasks} from '../../../../../common/entities/task/TaskDTO';
|
||||
import {ScheduledJobsService} from '../scheduled-jobs.service';
|
||||
import {DefaultsJobs} from '../../../../../common/entities/job/JobDTO';
|
||||
import {ServerConfig} from '../../../../../common/config/private/IPrivateConfig';
|
||||
import {TaskState} from '../../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {JobState} from '../../../../../common/entities/settings/JobProgressDTO';
|
||||
|
||||
@Component({
|
||||
selector: 'app-settings-indexing',
|
||||
@ -24,12 +24,12 @@ export class IndexingSettingsComponent extends SettingsComponent<ServerConfig.In
|
||||
|
||||
|
||||
types: { key: number; value: string }[] = [];
|
||||
TaskState = TaskState;
|
||||
JobState = JobState;
|
||||
|
||||
constructor(_authService: AuthenticationService,
|
||||
_navigation: NavigationService,
|
||||
_settingsService: IndexingSettingsService,
|
||||
public tasksService: ScheduledTasksService,
|
||||
public jobsService: ScheduledJobsService,
|
||||
notification: NotificationService,
|
||||
i18n: I18n) {
|
||||
|
||||
@ -44,7 +44,7 @@ export class IndexingSettingsComponent extends SettingsComponent<ServerConfig.In
|
||||
}
|
||||
|
||||
get Progress() {
|
||||
return this.tasksService.progress.value[DefaultsTasks[DefaultsTasks.Indexing]];
|
||||
return this.jobsService.progress.value[DefaultsJobs[DefaultsJobs.Indexing]];
|
||||
}
|
||||
|
||||
get excludeFolderList(): string {
|
||||
@ -65,12 +65,12 @@ export class IndexingSettingsComponent extends SettingsComponent<ServerConfig.In
|
||||
|
||||
ngOnDestroy() {
|
||||
super.ngOnDestroy();
|
||||
this.tasksService.unsubscribeFromProgress();
|
||||
this.jobsService.unsubscribeFromProgress();
|
||||
}
|
||||
|
||||
async ngOnInit() {
|
||||
super.ngOnInit();
|
||||
this.tasksService.subscribeToProgress();
|
||||
this.jobsService.subscribeToProgress();
|
||||
this.types = Utils
|
||||
.enumToArray(ServerConfig.ReIndexingSensitivity);
|
||||
this.types.forEach(v => {
|
||||
@ -93,7 +93,7 @@ export class IndexingSettingsComponent extends SettingsComponent<ServerConfig.In
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.start(DefaultsTasks[DefaultsTasks.Indexing]);
|
||||
await this.jobsService.start(DefaultsJobs[DefaultsJobs.Indexing]);
|
||||
this.notification.info(this.i18n('Folder indexing started'));
|
||||
this.inProgress = false;
|
||||
return true;
|
||||
@ -112,7 +112,7 @@ export class IndexingSettingsComponent extends SettingsComponent<ServerConfig.In
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.stop(DefaultsTasks[DefaultsTasks.Indexing]);
|
||||
await this.jobsService.stop(DefaultsJobs[DefaultsJobs.Indexing]);
|
||||
this.notification.info(this.i18n('Folder indexing interrupted'));
|
||||
this.inProgress = false;
|
||||
return true;
|
||||
@ -131,7 +131,7 @@ export class IndexingSettingsComponent extends SettingsComponent<ServerConfig.In
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.start(DefaultsTasks[DefaultsTasks['Database Reset']]);
|
||||
await this.jobsService.start(DefaultsJobs[DefaultsJobs['Database Reset']]);
|
||||
this.notification.info(this.i18n('Resetting database'));
|
||||
this.inProgress = false;
|
||||
return true;
|
||||
|
@ -4,8 +4,8 @@ import {SettingsService} from '../settings.service';
|
||||
import {AbstractSettingsService} from '../_abstract/abstract.settings.service';
|
||||
import {BehaviorSubject} from 'rxjs';
|
||||
import {StatisticDTO} from '../../../../../common/entities/settings/StatisticDTO';
|
||||
import {ScheduledTasksService} from '../scheduled-tasks.service';
|
||||
import {DefaultsTasks} from '../../../../../common/entities/task/TaskDTO';
|
||||
import {ScheduledJobsService} from '../scheduled-jobs.service';
|
||||
import {DefaultsJobs} from '../../../../../common/entities/job/JobDTO';
|
||||
import {ServerConfig} from '../../../../../common/config/private/IPrivateConfig';
|
||||
import {first} from 'rxjs/operators';
|
||||
|
||||
@ -16,7 +16,7 @@ export class IndexingSettingsService extends AbstractSettingsService<ServerConfi
|
||||
public statistic: BehaviorSubject<StatisticDTO>;
|
||||
|
||||
constructor(private _networkService: NetworkService,
|
||||
private _tasksService: ScheduledTasksService,
|
||||
private _jobsService: ScheduledJobsService,
|
||||
_settingsService: SettingsService) {
|
||||
super(_settingsService);
|
||||
this.statistic = new BehaviorSubject(null);
|
||||
@ -25,9 +25,9 @@ export class IndexingSettingsService extends AbstractSettingsService<ServerConfi
|
||||
this.loadStatistic();
|
||||
}
|
||||
});
|
||||
this._tasksService.onTaskFinish.subscribe((taskName: string) => {
|
||||
if (taskName === DefaultsTasks[DefaultsTasks.Indexing] ||
|
||||
taskName === DefaultsTasks[DefaultsTasks['Database Reset']]) {
|
||||
this._jobsService.onJobFinish.subscribe((jobName: string) => {
|
||||
if (jobName === DefaultsJobs[DefaultsJobs.Indexing] ||
|
||||
jobName === DefaultsJobs[DefaultsJobs['Database Reset']]) {
|
||||
if (this.isSupported()) {
|
||||
this.loadStatistic();
|
||||
}
|
||||
|
@ -10,16 +10,16 @@
|
||||
<div class="card bg-light">
|
||||
<div class="card-header clickable" (click)="showDetails[i]=!showDetails[i]">
|
||||
<div class="d-flex justify-content-between">
|
||||
{{schedule.taskName}} @<!--
|
||||
{{schedule.jobName}} @<!--
|
||||
-->
|
||||
<ng-container [ngSwitch]="schedule.trigger.type">
|
||||
<ng-container *ngSwitchCase="TaskTriggerType.periodic">
|
||||
<ng-container *ngSwitchCase="JobTriggerType.periodic">
|
||||
<ng-container i18n>every</ng-container>
|
||||
{{periods[schedule.trigger.periodicity]}} {{schedule.trigger.atTime | date:"HH:mm":"+0"}}
|
||||
</ng-container>
|
||||
<ng-container
|
||||
*ngSwitchCase="TaskTriggerType.scheduled">{{schedule.trigger.time | date:"medium"}}</ng-container>
|
||||
<ng-container *ngSwitchCase="TaskTriggerType.never" i18n>never</ng-container>
|
||||
*ngSwitchCase="JobTriggerType.scheduled">{{schedule.trigger.time | date:"medium"}}</ng-container>
|
||||
<ng-container *ngSwitchCase="JobTriggerType.never" i18n>never</ng-container>
|
||||
</ng-container>
|
||||
<button class="btn btn-danger button-delete" (click)="remove(i)"><span class="oi oi-trash"></span>
|
||||
</button>
|
||||
@ -31,16 +31,16 @@
|
||||
|
||||
<div class="col-md-9">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" [for]="'taskName'+i" i18n>Task:</label>
|
||||
<label class="col-md-2 control-label" [for]="'jobName'+i" i18n>Job:</label>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control" (change)="taskTypeChanged(schedule)" [(ngModel)]="schedule.taskName"
|
||||
[name]="'taskName'+i" required>
|
||||
<option *ngFor="let availableTask of _settingsService.availableTasks | async"
|
||||
[ngValue]="availableTask.Name">{{availableTask.Name}}
|
||||
<select class="form-control" (change)="jobTypeChanged(schedule)" [(ngModel)]="schedule.jobName"
|
||||
[name]="'jobName'+i" required>
|
||||
<option *ngFor="let availableJob of _settingsService.availableJobs | async"
|
||||
[ngValue]="availableJob.Name">{{availableJob.Name}}
|
||||
</option>
|
||||
</select>
|
||||
<small class="form-text text-muted"
|
||||
i18n>Select a task to schedule.
|
||||
i18n>Select a job to schedule.
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
@ -48,20 +48,20 @@
|
||||
<label class="col-md-2 control-label" [for]="'repeatType'+i" i18n>Periodicity:</label>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control" [(ngModel)]="schedule.trigger.type"
|
||||
(ngModelChange)="taskTriggerTypeChanged($event,schedule)"
|
||||
(ngModelChange)="jobTriggerTypeChanged($event,schedule)"
|
||||
[name]="'repeatType'+i" required>
|
||||
<option *ngFor="let taskTrigger of taskTriggerType"
|
||||
[ngValue]="taskTrigger.key">{{taskTrigger.value}}
|
||||
<option *ngFor="let jobTrigger of JobTriggerTypeMap"
|
||||
[ngValue]="jobTrigger.key">{{jobTrigger.value}}
|
||||
</option>
|
||||
</select>
|
||||
<small class="form-text text-muted"
|
||||
i18n>Set the time to run the task.
|
||||
i18n>Set the time to run the job.
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group row" *ngIf="schedule.trigger.type == TaskTriggerType.scheduled">
|
||||
<div class="form-group row" *ngIf="schedule.trigger.type == JobTriggerType.scheduled">
|
||||
<label class="col-md-2 control-label" [for]="'triggerTime'+i" i18n>At:</label>
|
||||
<div class="col-md-10">
|
||||
<app-timestamp-datepicker
|
||||
@ -71,7 +71,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row" *ngIf="schedule.trigger.type == TaskTriggerType.periodic">
|
||||
<div class="form-group row" *ngIf="schedule.trigger.type == JobTriggerType.periodic">
|
||||
<label class="col-md-2 control-label" [for]="'periodicity'+i" i18n>At:</label>
|
||||
<div class="col-md-10">
|
||||
<select
|
||||
@ -94,23 +94,23 @@
|
||||
|
||||
<div class="col-md-3">
|
||||
<button class="btn btn-success float-right"
|
||||
*ngIf="!tasksService.progress.value[schedule.taskName]"
|
||||
*ngIf="!jobsService.progress.value[schedule.jobName]"
|
||||
[disabled]="disableButtons"
|
||||
title="Trigger task run manually"
|
||||
title="Trigger job run manually"
|
||||
i18n-title
|
||||
(click)="start(schedule)" i18n>Start now
|
||||
</button>
|
||||
<button class="btn btn-secondary float-right"
|
||||
*ngIf="tasksService.progress.value[schedule.taskName]"
|
||||
[disabled]="disableButtons || tasksService.progress.value[schedule.taskName].state !== TaskState.running"
|
||||
*ngIf="jobsService.progress.value[schedule.jobName]"
|
||||
[disabled]="disableButtons || jobsService.progress.value[schedule.jobName].state !== JobState.running"
|
||||
(click)="stop(schedule)" i18n>Stop
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ng-container *ngIf="getConfigTemplate(schedule.taskName) ">
|
||||
<ng-container *ngIf="getConfigTemplate(schedule.jobName) ">
|
||||
<hr/>
|
||||
<div *ngFor="let configEntry of getConfigTemplate(schedule.taskName)">
|
||||
<div *ngFor="let configEntry of getConfigTemplate(schedule.jobName)">
|
||||
<ng-container [ngSwitch]="configEntry.type">
|
||||
<ng-container *ngSwitchCase="'boolean'">
|
||||
<div class="form-group row">
|
||||
@ -175,10 +175,10 @@
|
||||
</div>
|
||||
</ng-container>
|
||||
</div>
|
||||
<app-settings-tasks-progress
|
||||
<app-settings-job-progress
|
||||
class="card-footer bg-transparent"
|
||||
[progress]="tasksService.progress.value[schedule.taskName]">
|
||||
</app-settings-tasks-progress>
|
||||
[progress]="jobsService.progress.value[schedule.jobName]">
|
||||
</app-settings-job-progress>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@ -191,7 +191,7 @@
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
<button class="btn btn-primary float-right"
|
||||
(click)="addNewTask()" i18n>+ Add task
|
||||
(click)="addNewJob()" i18n>+ Add Job
|
||||
</button>
|
||||
</div>
|
||||
|
@ -1,58 +1,58 @@
|
||||
import {Component, OnChanges, OnDestroy, OnInit} from '@angular/core';
|
||||
import {TasksSettingsService} from './tasks.settings.service';
|
||||
import {JobsSettingsService} from './jobs.settings.service';
|
||||
import {AuthenticationService} from '../../../model/network/authentication.service';
|
||||
import {NavigationService} from '../../../model/navigation.service';
|
||||
import {NotificationService} from '../../../model/notification.service';
|
||||
import {SettingsComponent} from '../_abstract/abstract.settings.component';
|
||||
import {I18n} from '@ngx-translate/i18n-polyfill';
|
||||
import {ErrorDTO} from '../../../../../common/entities/Error';
|
||||
import {ScheduledTasksService} from '../scheduled-tasks.service';
|
||||
import {ScheduledJobsService} from '../scheduled-jobs.service';
|
||||
import {
|
||||
NeverTaskTrigger,
|
||||
PeriodicTaskTrigger,
|
||||
ScheduledTaskTrigger,
|
||||
TaskScheduleDTO,
|
||||
TaskTriggerType
|
||||
} from '../../../../../common/entities/task/TaskScheduleDTO';
|
||||
NeverJobTrigger,
|
||||
PeriodicJobTrigger,
|
||||
ScheduledJobTrigger,
|
||||
JobScheduleDTO,
|
||||
JobTriggerType
|
||||
} from '../../../../../common/entities/job/JobScheduleDTO';
|
||||
import {Utils} from '../../../../../common/Utils';
|
||||
import {ServerConfig} from '../../../../../common/config/private/IPrivateConfig';
|
||||
import {ConfigTemplateEntry} from '../../../../../common/entities/task/TaskDTO';
|
||||
import {TaskState} from '../../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {ConfigTemplateEntry} from '../../../../../common/entities/job/JobDTO';
|
||||
import {JobState} from '../../../../../common/entities/settings/JobProgressDTO';
|
||||
|
||||
@Component({
|
||||
selector: 'app-settings-tasks',
|
||||
templateUrl: './tasks.settings.component.html',
|
||||
styleUrls: ['./tasks.settings.component.css',
|
||||
selector: 'app-settings-jobs',
|
||||
templateUrl: './jobs.settings.component.html',
|
||||
styleUrls: ['./jobs.settings.component.css',
|
||||
'../_abstract/abstract.settings.component.css'],
|
||||
providers: [TasksSettingsService]
|
||||
providers: [JobsSettingsService]
|
||||
})
|
||||
export class TasksSettingsComponent extends SettingsComponent<ServerConfig.TaskConfig, TasksSettingsService>
|
||||
export class JobsSettingsComponent extends SettingsComponent<ServerConfig.JobConfig, JobsSettingsService>
|
||||
implements OnInit, OnDestroy, OnChanges {
|
||||
|
||||
disableButtons = false;
|
||||
taskTriggerType: { key: number, value: string }[];
|
||||
TaskTriggerType = TaskTriggerType;
|
||||
JobTriggerTypeMap: { key: number, value: string }[];
|
||||
JobTriggerType = JobTriggerType;
|
||||
periods: string[] = [];
|
||||
showDetails: boolean[] = [];
|
||||
TaskState = TaskState;
|
||||
JobState = JobState;
|
||||
|
||||
constructor(_authService: AuthenticationService,
|
||||
_navigation: NavigationService,
|
||||
_settingsService: TasksSettingsService,
|
||||
public tasksService: ScheduledTasksService,
|
||||
_settingsService: JobsSettingsService,
|
||||
public jobsService: ScheduledJobsService,
|
||||
notification: NotificationService,
|
||||
i18n: I18n) {
|
||||
|
||||
super(i18n('Tasks'),
|
||||
super(i18n('Jobs'),
|
||||
_authService,
|
||||
_navigation,
|
||||
_settingsService,
|
||||
notification,
|
||||
i18n,
|
||||
s => s.Server.Tasks);
|
||||
s => s.Server.Jobs);
|
||||
|
||||
this.hasAvailableSettings = !this.simplifiedMode;
|
||||
this.taskTriggerType = Utils.enumToArray(TaskTriggerType);
|
||||
this.JobTriggerTypeMap = Utils.enumToArray(JobTriggerType);
|
||||
this.periods = [this.i18n('Monday'), // 0
|
||||
this.i18n('Tuesday'), // 1
|
||||
this.i18n('Wednesday'), // 2
|
||||
@ -65,32 +65,32 @@ export class TasksSettingsComponent extends SettingsComponent<ServerConfig.TaskC
|
||||
|
||||
|
||||
|
||||
getConfigTemplate(taskName: string): ConfigTemplateEntry[] {
|
||||
const task = this._settingsService.availableTasks.value.find(t => t.Name === taskName);
|
||||
if (task && task.ConfigTemplate && task.ConfigTemplate.length > 0) {
|
||||
return task.ConfigTemplate;
|
||||
getConfigTemplate(JobName: string): ConfigTemplateEntry[] {
|
||||
const job = this._settingsService.availableJobs.value.find(t => t.Name === JobName);
|
||||
if (job && job.ConfigTemplate && job.ConfigTemplate.length > 0) {
|
||||
return job.ConfigTemplate;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
super.ngOnInit();
|
||||
this.tasksService.subscribeToProgress();
|
||||
this._settingsService.getAvailableTasks();
|
||||
this.jobsService.subscribeToProgress();
|
||||
this._settingsService.getAvailableJobs();
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
super.ngOnDestroy();
|
||||
this.tasksService.unsubscribeFromProgress();
|
||||
this.jobsService.unsubscribeFromProgress();
|
||||
}
|
||||
|
||||
|
||||
public async start(schedule: TaskScheduleDTO) {
|
||||
public async start(schedule: JobScheduleDTO) {
|
||||
this.error = '';
|
||||
try {
|
||||
this.disableButtons = true;
|
||||
await this.tasksService.start(schedule.taskName, schedule.config);
|
||||
this.notification.info(this.i18n('Task') + ' ' + schedule.taskName + ' ' + this.i18n('started'));
|
||||
await this.jobsService.start(schedule.jobName, schedule.config);
|
||||
this.notification.info(this.i18n('Job') + ' ' + schedule.jobName + ' ' + this.i18n('started'));
|
||||
return true;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
@ -104,12 +104,12 @@ export class TasksSettingsComponent extends SettingsComponent<ServerConfig.TaskC
|
||||
return false;
|
||||
}
|
||||
|
||||
public async stop(schedule: TaskScheduleDTO) {
|
||||
public async stop(schedule: JobScheduleDTO) {
|
||||
this.error = '';
|
||||
try {
|
||||
this.disableButtons = true;
|
||||
await this.tasksService.stop(schedule.taskName);
|
||||
this.notification.info(this.i18n('Task') + ' ' + schedule.taskName + ' ' + this.i18n('stopped'));
|
||||
await this.jobsService.stop(schedule.jobName);
|
||||
this.notification.info(this.i18n('Job') + ' ' + schedule.jobName + ' ' + this.i18n('stopped'));
|
||||
return true;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
@ -128,38 +128,38 @@ export class TasksSettingsComponent extends SettingsComponent<ServerConfig.TaskC
|
||||
}
|
||||
|
||||
|
||||
taskTypeChanged(schedule: TaskScheduleDTO) {
|
||||
const task = this._settingsService.availableTasks.value.find(t => t.Name === schedule.taskName);
|
||||
jobTypeChanged(schedule: JobScheduleDTO) {
|
||||
const job = this._settingsService.availableJobs.value.find(t => t.Name === schedule.jobName);
|
||||
schedule.config = schedule.config || {};
|
||||
task.ConfigTemplate.forEach(ct => schedule.config[ct.id] = ct.defaultValue);
|
||||
job.ConfigTemplate.forEach(ct => schedule.config[ct.id] = ct.defaultValue);
|
||||
}
|
||||
|
||||
addNewTask() {
|
||||
const taskName = this._settingsService.availableTasks.value[0].Name;
|
||||
const newSchedule: TaskScheduleDTO = {
|
||||
taskName: taskName,
|
||||
addNewJob() {
|
||||
const jobName = this._settingsService.availableJobs.value[0].Name;
|
||||
const newSchedule: JobScheduleDTO = {
|
||||
jobName: jobName,
|
||||
config: <any>{},
|
||||
trigger: {
|
||||
type: TaskTriggerType.never
|
||||
type: JobTriggerType.never
|
||||
}
|
||||
};
|
||||
|
||||
const task = this._settingsService.availableTasks.value.find(t => t.Name === taskName);
|
||||
const job = this._settingsService.availableJobs.value.find(t => t.Name === jobName);
|
||||
newSchedule.config = newSchedule.config || {};
|
||||
task.ConfigTemplate.forEach(ct => newSchedule.config[ct.id] = ct.defaultValue);
|
||||
job.ConfigTemplate.forEach(ct => newSchedule.config[ct.id] = ct.defaultValue);
|
||||
this.settings.scheduled.push(newSchedule);
|
||||
}
|
||||
|
||||
taskTriggerTypeChanged(triggerType: TaskTriggerType, schedule: TaskScheduleDTO) {
|
||||
schedule.trigger = <NeverTaskTrigger>{type: triggerType};
|
||||
jobTriggerTypeChanged(triggerType: JobTriggerType, schedule: JobScheduleDTO) {
|
||||
schedule.trigger = <NeverJobTrigger>{type: triggerType};
|
||||
switch (triggerType) {
|
||||
case TaskTriggerType.scheduled:
|
||||
(<ScheduledTaskTrigger><unknown>schedule.trigger).time = (Date.now());
|
||||
case JobTriggerType.scheduled:
|
||||
(<ScheduledJobTrigger><unknown>schedule.trigger).time = (Date.now());
|
||||
break;
|
||||
|
||||
case TaskTriggerType.periodic:
|
||||
(<PeriodicTaskTrigger><unknown>schedule.trigger).periodicity = null;
|
||||
(<PeriodicTaskTrigger><unknown>schedule.trigger).atTime = null;
|
||||
case JobTriggerType.periodic:
|
||||
(<PeriodicJobTrigger><unknown>schedule.trigger).periodicity = null;
|
||||
(<PeriodicJobTrigger><unknown>schedule.trigger).atTime = null;
|
||||
break;
|
||||
}
|
||||
}
|
@ -3,23 +3,23 @@ import {NetworkService} from '../../../model/network/network.service';
|
||||
import {SettingsService} from '../settings.service';
|
||||
import {AbstractSettingsService} from '../_abstract/abstract.settings.service';
|
||||
import {BehaviorSubject} from 'rxjs';
|
||||
import {TaskDTO} from '../../../../../common/entities/task/TaskDTO';
|
||||
import {JobDTO} from '../../../../../common/entities/job/JobDTO';
|
||||
import {ServerConfig} from '../../../../../common/config/private/IPrivateConfig';
|
||||
|
||||
@Injectable()
|
||||
export class TasksSettingsService extends AbstractSettingsService<ServerConfig.TaskConfig> {
|
||||
export class JobsSettingsService extends AbstractSettingsService<ServerConfig.JobConfig> {
|
||||
|
||||
|
||||
public availableTasks: BehaviorSubject<TaskDTO[]>;
|
||||
public availableJobs: BehaviorSubject<JobDTO[]>;
|
||||
|
||||
constructor(private _networkService: NetworkService,
|
||||
_settingsService: SettingsService) {
|
||||
super(_settingsService);
|
||||
this.availableTasks = new BehaviorSubject([]);
|
||||
this.availableJobs = new BehaviorSubject([]);
|
||||
}
|
||||
|
||||
public updateSettings(settings: ServerConfig.TaskConfig): Promise<void> {
|
||||
return this._networkService.putJson('/settings/tasks', {settings: settings});
|
||||
public updateSettings(settings: ServerConfig.JobConfig): Promise<void> {
|
||||
return this._networkService.putJson('/settings/jobs', {settings: settings});
|
||||
}
|
||||
|
||||
|
||||
@ -32,8 +32,8 @@ export class TasksSettingsService extends AbstractSettingsService<ServerConfig.T
|
||||
}
|
||||
|
||||
|
||||
public async getAvailableTasks() {
|
||||
this.availableTasks.next(await this._networkService.getJson<TaskDTO[]>('/admin/tasks/available'));
|
||||
public async getAvailableJobs() {
|
||||
this.availableJobs.next(await this._networkService.getJson<JobDTO[]>('/admin/jobs/available'));
|
||||
}
|
||||
|
||||
}
|
@ -2,9 +2,9 @@
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-md-12">
|
||||
<input *ngIf="progress.state === TaskState.running" type="text" class="form-control" disabled
|
||||
<input *ngIf="progress.state === JobState.running" type="text" class="form-control" disabled
|
||||
[ngModel]="progress.comment" name="details">
|
||||
<input *ngIf="progress.state === TaskState.stopping" type="text" class="form-control" disabled value="Stopping"
|
||||
<input *ngIf="progress.state === JobState.stopping" type="text" class="form-control" disabled value="Stopping"
|
||||
i18n-value name="details">
|
||||
</div>
|
||||
</div>
|
||||
@ -15,7 +15,7 @@
|
||||
<div class="progress col-10 ">
|
||||
<div
|
||||
*ngIf="progress.progress + progress.left >0"
|
||||
class="progress-bar d-inline-block progress-bar-success {{progress.state === TaskState.stopping ? 'bg-secondary' : ''}}"
|
||||
class="progress-bar d-inline-block progress-bar-success {{progress.state === JobState.stopping ? 'bg-secondary' : ''}}"
|
||||
role="progressbar"
|
||||
aria-valuenow="2"
|
||||
aria-valuemin="0"
|
||||
@ -26,7 +26,7 @@
|
||||
</div>
|
||||
<div
|
||||
*ngIf="progress.progress + progress.left === 0"
|
||||
class="progress-bar d-inline-block progress-bar-success progress-bar-striped progress-bar-animated {{progress.state === TaskState.stopping ? 'bg-secondary' : ''}}"
|
||||
class="progress-bar d-inline-block progress-bar-success progress-bar-striped progress-bar-animated {{progress.state === JobState.stopping ? 'bg-secondary' : ''}}"
|
||||
role="progressbar" aria-valuenow="100"
|
||||
aria-valuemin="0" aria-valuemax="100" style="width: 100%">
|
||||
</div>
|
@ -1,16 +1,16 @@
|
||||
import {Component, Input, OnChanges, OnDestroy} from '@angular/core';
|
||||
import {TaskProgressDTO, TaskState} from '../../../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {JobProgressDTO, JobState} from '../../../../../../common/entities/settings/JobProgressDTO';
|
||||
import {Subscription, timer} from 'rxjs';
|
||||
|
||||
@Component({
|
||||
selector: 'app-settings-tasks-progress',
|
||||
templateUrl: './progress.tasks.settings.component.html',
|
||||
styleUrls: ['./progress.tasks.settings.component.css']
|
||||
selector: 'app-settings-job-progress',
|
||||
templateUrl: './job-progress.settings.component.html',
|
||||
styleUrls: ['./job-progress.settings.component.css']
|
||||
})
|
||||
export class TasksProgressComponent implements OnDestroy, OnChanges {
|
||||
export class JobProgressComponent implements OnDestroy, OnChanges {
|
||||
|
||||
@Input() progress: TaskProgressDTO;
|
||||
TaskState = TaskState;
|
||||
@Input() progress: JobProgressDTO;
|
||||
JobState = JobState;
|
||||
timeCurrentCopy: number;
|
||||
private timerSub: Subscription;
|
||||
|
@ -110,7 +110,7 @@
|
||||
</button>
|
||||
<button class="btn btn-secondary float-left ml-0"
|
||||
*ngIf="Progress != null"
|
||||
[disabled]="inProgress || Progress.state !== TaskState.running"
|
||||
[disabled]="inProgress || Progress.state !== JobState.running"
|
||||
(click)="cancelPhotoConverting()" i18n>Cancel converting
|
||||
</button>
|
||||
|
||||
@ -118,7 +118,7 @@
|
||||
<ng-container *ngIf="Progress != null">
|
||||
<br/>
|
||||
<hr/>
|
||||
<app-settings-tasks-progress [progress]="Progress"></app-settings-tasks-progress>
|
||||
<app-settings-job-progress [progress]="Progress"></app-settings-job-progress>
|
||||
</ng-container>
|
||||
|
||||
</div>
|
||||
|
@ -6,12 +6,12 @@ import {NavigationService} from '../../../model/navigation.service';
|
||||
import {NotificationService} from '../../../model/notification.service';
|
||||
import {ClientConfig} from '../../../../../common/config/public/ConfigClass';
|
||||
import {I18n} from '@ngx-translate/i18n-polyfill';
|
||||
import {ScheduledTasksService} from '../scheduled-tasks.service';
|
||||
import {ScheduledJobsService} from '../scheduled-jobs.service';
|
||||
import {ServerConfig} from '../../../../../common/config/private/IPrivateConfig';
|
||||
import {Utils} from '../../../../../common/Utils';
|
||||
import {DefaultsTasks} from '../../../../../common/entities/task/TaskDTO';
|
||||
import {DefaultsJobs} from '../../../../../common/entities/job/JobDTO';
|
||||
import {ErrorDTO} from '../../../../../common/entities/Error';
|
||||
import {TaskState} from '../../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {JobState} from '../../../../../common/entities/settings/JobProgressDTO';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -28,7 +28,7 @@ export class PhotoSettingsComponent extends SettingsComponent<{
|
||||
}> {
|
||||
resolutions = [720, 1080, 1440, 2160, 4320];
|
||||
PhotoProcessingLib = ServerConfig.PhotoProcessingLib;
|
||||
TaskState = TaskState;
|
||||
JobState = JobState;
|
||||
|
||||
libTypes = Utils
|
||||
.enumToArray(ServerConfig.PhotoProcessingLib).map((v) => {
|
||||
@ -43,7 +43,7 @@ export class PhotoSettingsComponent extends SettingsComponent<{
|
||||
constructor(_authService: AuthenticationService,
|
||||
_navigation: NavigationService,
|
||||
_settingsService: PhotoSettingsService,
|
||||
public tasksService: ScheduledTasksService,
|
||||
public jobsService: ScheduledJobsService,
|
||||
notification: NotificationService,
|
||||
i18n: I18n) {
|
||||
super(i18n('Photo'), _authService, _navigation, _settingsService, notification, i18n, s => ({
|
||||
@ -59,14 +59,14 @@ export class PhotoSettingsComponent extends SettingsComponent<{
|
||||
|
||||
|
||||
get Progress() {
|
||||
return this.tasksService.progress.value[DefaultsTasks[DefaultsTasks['Photo Converting']]];
|
||||
return this.jobsService.progress.value[DefaultsJobs[DefaultsJobs['Photo Converting']]];
|
||||
}
|
||||
|
||||
async convertPhoto() {
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.start(DefaultsTasks[DefaultsTasks['Photo Converting']]);
|
||||
await this.jobsService.start(DefaultsJobs[DefaultsJobs['Photo Converting']]);
|
||||
this.notification.info(this.i18n('Photo converting started'));
|
||||
return true;
|
||||
} catch (err) {
|
||||
@ -85,7 +85,7 @@ export class PhotoSettingsComponent extends SettingsComponent<{
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.stop(DefaultsTasks[DefaultsTasks['Photo Converting']]);
|
||||
await this.jobsService.stop(DefaultsJobs[DefaultsJobs['Photo Converting']]);
|
||||
this.notification.info(this.i18n('Photo converting interrupted'));
|
||||
return true;
|
||||
} catch (err) {
|
||||
|
@ -1,14 +1,14 @@
|
||||
import {EventEmitter, Injectable} from '@angular/core';
|
||||
import {BehaviorSubject} from 'rxjs';
|
||||
import {TaskProgressDTO} from '../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {JobProgressDTO} from '../../../../common/entities/settings/JobProgressDTO';
|
||||
import {NetworkService} from '../../model/network/network.service';
|
||||
|
||||
@Injectable()
|
||||
export class ScheduledTasksService {
|
||||
export class ScheduledJobsService {
|
||||
|
||||
|
||||
public progress: BehaviorSubject<{ [key: string]: TaskProgressDTO }>;
|
||||
public onTaskFinish: EventEmitter<string> = new EventEmitter<string>();
|
||||
public progress: BehaviorSubject<{ [key: string]: JobProgressDTO }>;
|
||||
public onJobFinish: EventEmitter<string> = new EventEmitter<string>();
|
||||
timer: number = null;
|
||||
private subscribers = 0;
|
||||
|
||||
@ -16,13 +16,13 @@ export class ScheduledTasksService {
|
||||
this.progress = new BehaviorSubject({});
|
||||
}
|
||||
|
||||
public calcTimeElapsed(progress: TaskProgressDTO) {
|
||||
public calcTimeElapsed(progress: JobProgressDTO) {
|
||||
if (progress) {
|
||||
return (progress.time.current - progress.time.start);
|
||||
}
|
||||
}
|
||||
|
||||
public calcTimeLeft(progress: TaskProgressDTO) {
|
||||
public calcTimeLeft(progress: JobProgressDTO) {
|
||||
if (progress) {
|
||||
return (progress.time.current - progress.time.start) / progress.progress * progress.left;
|
||||
}
|
||||
@ -41,21 +41,21 @@ export class ScheduledTasksService {
|
||||
}
|
||||
|
||||
public async start(id: string, config?: any): Promise<void> {
|
||||
await this._networkService.postJson('/admin/tasks/scheduled/' + id + '/start', {config: config});
|
||||
await this._networkService.postJson('/admin/jobs/scheduled/' + id + '/start', {config: config});
|
||||
this.forceUpdate();
|
||||
}
|
||||
|
||||
public async stop(id: string): Promise<void> {
|
||||
await this._networkService.postJson('/admin/tasks/scheduled/' + id + '/stop');
|
||||
await this._networkService.postJson('/admin/jobs/scheduled/' + id + '/stop');
|
||||
this.forceUpdate();
|
||||
}
|
||||
|
||||
protected async getProgress(): Promise<void> {
|
||||
const prevPrg = this.progress.value;
|
||||
this.progress.next(await this._networkService.getJson<{ [key: string]: TaskProgressDTO }>('/admin/tasks/scheduled/progress'));
|
||||
this.progress.next(await this._networkService.getJson<{ [key: string]: JobProgressDTO }>('/admin/jobs/scheduled/progress'));
|
||||
for (const prg in prevPrg) {
|
||||
if (!this.progress.value.hasOwnProperty(prg)) {
|
||||
this.onTaskFinish.emit(prg);
|
||||
this.onJobFinish.emit(prg);
|
||||
}
|
||||
}
|
||||
}
|
@ -80,21 +80,21 @@
|
||||
[disabled]="inProgress"
|
||||
title="Generates all thumbnails now"
|
||||
i18n-title
|
||||
(click)="startTask()">
|
||||
(click)="startJob()">
|
||||
<ng-container i18n>Generate thumbnails now</ng-container>
|
||||
<span class="oi oi-media-play ml-2"></span>
|
||||
</button>
|
||||
<button class="btn btn-secondary float-left ml-0"
|
||||
*ngIf="Progress != null"
|
||||
[disabled]="inProgress || Progress.state !== TaskState.running"
|
||||
(click)="cancelTask()" i18n>Cancel thumbnail generation
|
||||
[disabled]="inProgress || Progress.state !== JobState.running"
|
||||
(click)="cancelJob()" i18n>Cancel thumbnail generation
|
||||
</button>
|
||||
|
||||
|
||||
<ng-container *ngIf="Progress != null">
|
||||
<br/>
|
||||
<hr/>
|
||||
<app-settings-tasks-progress [progress]="Progress"></app-settings-tasks-progress>
|
||||
<app-settings-job-progress [progress]="Progress"></app-settings-job-progress>
|
||||
</ng-container>
|
||||
|
||||
</div>
|
||||
|
@ -7,10 +7,10 @@ import {ClientConfig} from '../../../../../common/config/public/ConfigClass';
|
||||
import {ThumbnailSettingsService} from './thumbnail.settings.service';
|
||||
import {I18n} from '@ngx-translate/i18n-polyfill';
|
||||
import {ServerConfig} from '../../../../../common/config/private/IPrivateConfig';
|
||||
import {DefaultsTasks} from '../../../../../common/entities/task/TaskDTO';
|
||||
import {DefaultsJobs} from '../../../../../common/entities/job/JobDTO';
|
||||
import {ErrorDTO} from '../../../../../common/entities/Error';
|
||||
import {ScheduledTasksService} from '../scheduled-tasks.service';
|
||||
import {TaskState} from '../../../../../common/entities/settings/TaskProgressDTO';
|
||||
import {ScheduledJobsService} from '../scheduled-jobs.service';
|
||||
import {JobState} from '../../../../../common/entities/settings/JobProgressDTO';
|
||||
|
||||
@Component({
|
||||
selector: 'app-settings-thumbnail',
|
||||
@ -22,13 +22,13 @@ import {TaskState} from '../../../../../common/entities/settings/TaskProgressDTO
|
||||
export class ThumbnailSettingsComponent
|
||||
extends SettingsComponent<{ server: ServerConfig.ThumbnailConfig, client: ClientConfig.ThumbnailConfig }>
|
||||
implements OnInit {
|
||||
TaskState = TaskState;
|
||||
JobState = JobState;
|
||||
|
||||
constructor(_authService: AuthenticationService,
|
||||
_navigation: NavigationService,
|
||||
_settingsService: ThumbnailSettingsService,
|
||||
notification: NotificationService,
|
||||
public tasksService: ScheduledTasksService,
|
||||
public jobsService: ScheduledJobsService,
|
||||
i18n: I18n) {
|
||||
super(i18n('Thumbnail'), _authService, _navigation, _settingsService, notification, i18n, s => ({
|
||||
client: s.Client.Media.Thumbnail,
|
||||
@ -49,18 +49,18 @@ export class ThumbnailSettingsComponent
|
||||
}
|
||||
|
||||
get Progress() {
|
||||
return this.tasksService.progress.value[DefaultsTasks[DefaultsTasks['Thumbnail Generation']]];
|
||||
return this.jobsService.progress.value[DefaultsJobs[DefaultsJobs['Thumbnail Generation']]];
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
super.ngOnInit();
|
||||
}
|
||||
|
||||
async startTask() {
|
||||
async startJob() {
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.start(DefaultsTasks[DefaultsTasks['Thumbnail Generation']], {sizes: this.original.client.thumbnailSizes[0]});
|
||||
await this.jobsService.start(DefaultsJobs[DefaultsJobs['Thumbnail Generation']], {sizes: this.original.client.thumbnailSizes[0]});
|
||||
this.notification.info(this.i18n('Thumbnail generation started'));
|
||||
this.inProgress = false;
|
||||
return true;
|
||||
@ -75,11 +75,11 @@ export class ThumbnailSettingsComponent
|
||||
return false;
|
||||
}
|
||||
|
||||
async cancelTask() {
|
||||
async cancelJob() {
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.stop(DefaultsTasks[DefaultsTasks['Thumbnail Generation']]);
|
||||
await this.jobsService.stop(DefaultsJobs[DefaultsJobs['Thumbnail Generation']]);
|
||||
this.notification.info(this.i18n('Thumbnail generation interrupted'));
|
||||
this.inProgress = false;
|
||||
return true;
|
||||
|
@ -36,7 +36,7 @@
|
||||
server's upload rate.
|
||||
</ng-container>
|
||||
<ng-container i18n>The transcoded videos will be save to the thumbnail folder.</ng-container>
|
||||
<ng-container i18n>You can trigger the transcoding manually, but you can also create an automatic encoding task
|
||||
<ng-container i18n>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</ng-container>
|
||||
@ -136,7 +136,7 @@
|
||||
</button>
|
||||
<button class="btn btn-secondary float-left ml-0"
|
||||
*ngIf="Progress != null"
|
||||
[disabled]="inProgress || Progress.state !== TaskState.running"
|
||||
[disabled]="inProgress || Progress.state !== JobState.running"
|
||||
(click)="cancelTranscoding()" i18n>Cancel transcoding
|
||||
</button>
|
||||
|
||||
@ -144,7 +144,7 @@
|
||||
<ng-container *ngIf="Progress != null">
|
||||
<br/>
|
||||
<hr/>
|
||||
<app-settings-tasks-progress [progress]="Progress"></app-settings-tasks-progress>
|
||||
<app-settings-job-progress [progress]="Progress"></app-settings-job-progress>
|
||||
</ng-container>
|
||||
|
||||
|
||||
|
@ -6,11 +6,11 @@ import {NavigationService} from '../../../model/navigation.service';
|
||||
import {NotificationService} from '../../../model/notification.service';
|
||||
import {ClientConfig} from '../../../../../common/config/public/ConfigClass';
|
||||
import {I18n} from '@ngx-translate/i18n-polyfill';
|
||||
import {ScheduledTasksService} from '../scheduled-tasks.service';
|
||||
import {DefaultsTasks} from '../../../../../common/entities/task/TaskDTO';
|
||||
import {ScheduledJobsService} from '../scheduled-jobs.service';
|
||||
import {DefaultsJobs} from '../../../../../common/entities/job/JobDTO';
|
||||
import {ErrorDTO} from '../../../../../common/entities/Error';
|
||||
import {ServerConfig} from '../../../../../common/config/private/IPrivateConfig';
|
||||
import { TaskState } from '../../../../../common/entities/settings/TaskProgressDTO';
|
||||
import { JobState } from '../../../../../common/entities/settings/JobProgressDTO';
|
||||
|
||||
|
||||
@Component({
|
||||
@ -27,12 +27,12 @@ export class VideoSettingsComponent extends SettingsComponent<{ server: ServerCo
|
||||
formats: ServerConfig.formatType[] = ['mp4', 'webm'];
|
||||
fps = [24, 25, 30, 48, 50, 60];
|
||||
|
||||
TaskState = TaskState;
|
||||
JobState = JobState;
|
||||
|
||||
constructor(_authService: AuthenticationService,
|
||||
_navigation: NavigationService,
|
||||
_settingsService: VideoSettingsService,
|
||||
public tasksService: ScheduledTasksService,
|
||||
public jobsService: ScheduledJobsService,
|
||||
notification: NotificationService,
|
||||
i18n: I18n) {
|
||||
super(i18n('Video'), _authService, _navigation, _settingsService, notification, i18n, s => ({
|
||||
@ -48,7 +48,7 @@ export class VideoSettingsComponent extends SettingsComponent<{ server: ServerCo
|
||||
|
||||
|
||||
get Progress() {
|
||||
return this.tasksService.progress.value[DefaultsTasks[DefaultsTasks['Video Converting']]];
|
||||
return this.jobsService.progress.value[DefaultsJobs[DefaultsJobs['Video Converting']]];
|
||||
}
|
||||
|
||||
get bitRate(): number {
|
||||
@ -96,7 +96,7 @@ export class VideoSettingsComponent extends SettingsComponent<{ server: ServerCo
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.start(DefaultsTasks[DefaultsTasks['Video Converting']]);
|
||||
await this.jobsService.start(DefaultsJobs[DefaultsJobs['Video Converting']]);
|
||||
this.notification.info(this.i18n('Video transcoding started'));
|
||||
this.inProgress = false;
|
||||
return true;
|
||||
@ -115,7 +115,7 @@ export class VideoSettingsComponent extends SettingsComponent<{ server: ServerCo
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
try {
|
||||
await this.tasksService.stop(DefaultsTasks[DefaultsTasks['Video Converting']]);
|
||||
await this.jobsService.stop(DefaultsJobs[DefaultsJobs['Video Converting']]);
|
||||
this.notification.info(this.i18n('Video transcoding interrupted'));
|
||||
this.inProgress = false;
|
||||
return true;
|
||||
|
@ -694,8 +694,8 @@
|
||||
<context context-type="linenumber">170</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">189</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">187</context>
|
||||
</context-group>
|
||||
<target>Save</target>
|
||||
</trans-unit>
|
||||
@ -751,8 +751,8 @@
|
||||
<context context-type="linenumber">174</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">193</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">191</context>
|
||||
</context-group>
|
||||
<target>Reset</target>
|
||||
</trans-unit>
|
||||
@ -871,9 +871,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">56</context>
|
||||
</context-group>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more
|
||||
storage and CPU to render.)
|
||||
</target>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more storage and CPU to render.)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="acee7864683576e1e4f159e725db24ddeee32e1c" datatype="html">
|
||||
<source>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
@ -883,9 +881,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
</context-group>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
pixels.
|
||||
</target>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160 pixels.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5e561ce99009d20e901f7aef3c4f867a519ca9f0" datatype="html">
|
||||
<source>Generate thumbnails now</source>
|
||||
@ -910,8 +906,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">90</context>
|
||||
</context-group>
|
||||
<target>Cancel thumbnail generation
|
||||
</target>
|
||||
<target>Cancel thumbnail generation</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="69149fe434cf1b0d9bafe5ead5d126101bb5162e" datatype="html">
|
||||
<source>Video support uses ffmpeg. ffmpeg and ffprobe binaries need to be available in the PATH or
|
||||
@ -951,8 +946,8 @@
|
||||
</context-group>
|
||||
<target>The transcoded videos will be save to the thumbnail folder.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9ca8b858f4f19476c64b5f4b6416e8e8210c7f1e" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding task
|
||||
<trans-unit id="5c159049e5e44f672041b3ff2c85328cda14a740" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</source>
|
||||
@ -960,7 +955,10 @@
|
||||
<context context-type="sourcefile">app/ui/settings/video/video.settings.component.html</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<target>You can trigger the transcoding manually, but you can also create an automatic encoding task in advanced settings mode.</target>
|
||||
<target>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7722a92a1fc887570b4f4d8a7bb916f067f32028" datatype="html">
|
||||
<source>Format</source>
|
||||
@ -1133,8 +1131,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">53</context>
|
||||
</context-group>
|
||||
<target>Downsizes photos for faster preview loading. (Zooming in to the photo
|
||||
loads the original)</target>
|
||||
<target>Downsizes photos for faster preview loading. (Zooming in to the photo loads the original)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45becd33ed4f2f1a19f2040b4624968677f7b02b" datatype="html">
|
||||
<source>On the fly converting </source>
|
||||
@ -1142,7 +1139,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">59</context>
|
||||
</context-group>
|
||||
<target>On the fly converting </target>
|
||||
<target>On the fly converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a9a7b9d2773aa49ff4f41b01b55e0a51d664eecf" datatype="html">
|
||||
<source>Converts photos on the fly, when they are requested.</source>
|
||||
@ -1160,9 +1157,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
</context-group>
|
||||
<target>The shorter edge of the converted photo will be scaled down to this,
|
||||
while
|
||||
keeping the aspect ratio.</target>
|
||||
<target>The shorter edge of the converted photo will be scaled down to this, while keeping the aspect ratio.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4b9cafd261787994f5e6ab5c2fbab785156037ef" datatype="html">
|
||||
<source>Convert photos now</source>
|
||||
@ -1179,8 +1174,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">114</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="219e36c6747ef991081a68fc8ab2678677583e11" datatype="html">
|
||||
<source>Reads and show *.gpx files on the map</source>
|
||||
@ -1268,11 +1262,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/random-photo/random-photo.settings.component.html</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<target>
|
||||
This feature enables you to generate 'random photo' urls.
|
||||
That URL returns a photo random selected from your gallery.
|
||||
You can use the url with 3rd party application like random changing desktop background.
|
||||
</target>
|
||||
<target>This feature enables you to generate 'random photo' urls. That URL returns a photo random selected from your gallery. You can use the url with 3rd party application like random changing desktop background.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6c02e8541a2e670f80de8b5a218ea14a16bb6c42" datatype="html">
|
||||
<source>
|
||||
@ -1759,8 +1749,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
|
||||
<context context-type="linenumber">127</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ab4d309abbd8f981e3157ae6924b1962b69c3e36" datatype="html">
|
||||
<source>Reset Indexes
|
||||
@ -1816,7 +1805,7 @@
|
||||
<trans-unit id="6f905843264b6935f11115fb91b72ce4f2aafd75" datatype="html">
|
||||
<source>Stopping</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">7</context>
|
||||
</context-group>
|
||||
<target>Stopping</target>
|
||||
@ -1824,7 +1813,7 @@
|
||||
<trans-unit id="9f2195bf10299534034510f387621199db784343" datatype="html">
|
||||
<source>time elapsed</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">14</context>
|
||||
</context-group>
|
||||
<target>time elapsed</target>
|
||||
@ -1832,88 +1821,76 @@
|
||||
<trans-unit id="35511807089eb9a1864bec06e28d57e04b4c8f87" datatype="html">
|
||||
<source>time left</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">28</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>time left</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="18443428b116a10f17fbd067bde0553c00db45f1" datatype="html">
|
||||
<source>every</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">17</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">83</context>
|
||||
</context-group>
|
||||
<target>every</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e113e3450a367a1dff703fc5e0403a497ca73a7c" datatype="html">
|
||||
<source>never</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">23</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">22</context>
|
||||
</context-group>
|
||||
<target>never</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b51d9edc98562fb34f39d48bbd177db63f74fe8d" datatype="html">
|
||||
<source>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</source>
|
||||
<trans-unit id="89dc7dff0be8b6a3443789ff1e7469f47d92935e" datatype="html">
|
||||
<source>Job:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</target>
|
||||
<target>Job:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="41f883b96980ad03407749f5c0b2523528924dda" datatype="html">
|
||||
<source>Task:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
</context-group>
|
||||
<target>Task:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9bcffeb5af739217ecbeec01abeb14126b20bdda" datatype="html">
|
||||
<source>Select a task to schedule.
|
||||
<trans-unit id="0b87ca794b645dc89e2efe8478c401c605e03861" datatype="html">
|
||||
<source>Select a job to schedule.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
</context-group>
|
||||
<target>Select a task to schedule.</target>
|
||||
<target>Select a job to schedule.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f336006fe51502c7da913994e14a3137dd5c5009" datatype="html">
|
||||
<source>Periodicity:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">50</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">48</context>
|
||||
</context-group>
|
||||
<target>Periodicity:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="63082f0e453734275af4e538827c1ae06d04ef52" datatype="html">
|
||||
<source>Set the time to run the task.
|
||||
<trans-unit id="40aec3d7895a3d8dafac6fe442e45150769950ae" datatype="html">
|
||||
<source>Set the time to run the job.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">58</context>
|
||||
</context-group>
|
||||
<target>Set the time to run the task.</target>
|
||||
<target>Set the time to run the job.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ef36f0dc0067decf548cc11905ef3100f5bbd004" datatype="html">
|
||||
<source>At:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">67</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">65</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">77</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">75</context>
|
||||
</context-group>
|
||||
<target>At:</target>
|
||||
</trans-unit>
|
||||
@ -1921,44 +1898,45 @@
|
||||
<source>Start now
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">103</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
</context-group>
|
||||
<target>Start now</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="cfbd068646ce959a640ab824e85e1ed3ab20c5f2" datatype="html">
|
||||
<source>Trigger task run manually</source>
|
||||
<trans-unit id="75bfaf8c39c31b82e233afbbc1175d1a49ef172f" datatype="html">
|
||||
<source>Trigger job run manually</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">99</context>
|
||||
</context-group>
|
||||
<target>Trigger task run manually</target>
|
||||
<target>Trigger job run manually</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="493a5cb077ced16ccc13431ea5e2067eb40cd957" datatype="html">
|
||||
<source>Stop
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">108</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">106</context>
|
||||
</context-group>
|
||||
<target>Stop</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="eecad7f2f355d4ae0baed11537a10ceaebbc7382" datatype="html">
|
||||
<source>';' separated integers.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">171</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">169</context>
|
||||
</context-group>
|
||||
<target>';' separated integers.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="87dc7285ddadbe21ac1770275d35e8c747e0eb26" datatype="html">
|
||||
<source>+ Add task
|
||||
<trans-unit id="6ff865ebc673e7fe5ed9367575e44833ef811693" datatype="html">
|
||||
<source>+ Add Job
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">196</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">194</context>
|
||||
</context-group>
|
||||
<target>+ Add task</target>
|
||||
<target>+ Add Job
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="85b9773b9a3caeb9f0fd69b2b8fa7284bda6b492" datatype="html">
|
||||
<source>Server error</source>
|
||||
@ -2063,6 +2041,22 @@
|
||||
</context-group>
|
||||
<target>Simplified</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f56c1efc2bd6e9eb87cd271ea47ab620445012a2" datatype="html">
|
||||
<source>Built at</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Built at</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f620bdd6f6bdd3330d7f3786caa97cbba9cbde5a" datatype="html">
|
||||
<source>git hash</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>git hash</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">
|
||||
<source>Images</source>
|
||||
<context-group purpose="location">
|
||||
@ -2267,6 +2261,106 @@
|
||||
</context-group>
|
||||
<target>Resetting database</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
|
||||
<source>Jobs</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Jobs</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Monday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tuesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Wednesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Thursday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Friday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Saturday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Sunday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>day</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">
|
||||
<source>Job</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Job</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>started</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>stopped</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="d2a2915d79ff31439a174fc3a147004542291e29" datatype="html">
|
||||
<source>Map</source>
|
||||
<context-group purpose="location">
|
||||
@ -2339,106 +2433,6 @@
|
||||
</context-group>
|
||||
<target>Random Photo</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
|
||||
<source>Tasks</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tasks</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Monday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tuesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Wednesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Thursday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Friday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Saturday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Sunday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>day</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="61435c6c3b3cca0c204ef9f5369027565d327acb" datatype="html">
|
||||
<source>Task</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Task</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>started</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>stopped</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45dda89cf029b7d7b457a8dff01dc4b9a6485816" datatype="html">
|
||||
<source>Thumbnail</source>
|
||||
<context-group purpose="location">
|
||||
|
@ -694,8 +694,8 @@
|
||||
<context context-type="linenumber">170</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">189</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">187</context>
|
||||
</context-group>
|
||||
<target>Enregistrer</target>
|
||||
</trans-unit>
|
||||
@ -751,8 +751,8 @@
|
||||
<context context-type="linenumber">174</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">193</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">191</context>
|
||||
</context-group>
|
||||
<target>Réinitialiser</target>
|
||||
</trans-unit>
|
||||
@ -871,9 +871,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">56</context>
|
||||
</context-group>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more
|
||||
storage and CPU to render.)
|
||||
</target>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more storage and CPU to render.)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="acee7864683576e1e4f159e725db24ddeee32e1c" datatype="html">
|
||||
<source>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
@ -883,9 +881,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
</context-group>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
pixels.
|
||||
</target>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160 pixels.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5e561ce99009d20e901f7aef3c4f867a519ca9f0" datatype="html">
|
||||
<source>Generate thumbnails now</source>
|
||||
@ -910,8 +906,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">90</context>
|
||||
</context-group>
|
||||
<target>Cancel thumbnail generation
|
||||
</target>
|
||||
<target>Cancel thumbnail generation</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="69149fe434cf1b0d9bafe5ead5d126101bb5162e" datatype="html">
|
||||
<source>Video support uses ffmpeg. ffmpeg and ffprobe binaries need to be available in the PATH or
|
||||
@ -951,8 +946,8 @@
|
||||
</context-group>
|
||||
<target>The transcoded videos will be save to the thumbnail folder.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9ca8b858f4f19476c64b5f4b6416e8e8210c7f1e" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding task
|
||||
<trans-unit id="5c159049e5e44f672041b3ff2c85328cda14a740" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</source>
|
||||
@ -960,7 +955,10 @@
|
||||
<context context-type="sourcefile">app/ui/settings/video/video.settings.component.html</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<target>You can trigger the transcoding manually, but you can also create an automatic encoding task in advanced settings mode.</target>
|
||||
<target>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7722a92a1fc887570b4f4d8a7bb916f067f32028" datatype="html">
|
||||
<source>Format</source>
|
||||
@ -1133,8 +1131,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">53</context>
|
||||
</context-group>
|
||||
<target>Downsizes photos for faster preview loading. (Zooming in to the photo
|
||||
loads the original)</target>
|
||||
<target>Downsizes photos for faster preview loading. (Zooming in to the photo loads the original)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45becd33ed4f2f1a19f2040b4624968677f7b02b" datatype="html">
|
||||
<source>On the fly converting </source>
|
||||
@ -1142,7 +1139,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">59</context>
|
||||
</context-group>
|
||||
<target>On the fly converting </target>
|
||||
<target>On the fly converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a9a7b9d2773aa49ff4f41b01b55e0a51d664eecf" datatype="html">
|
||||
<source>Converts photos on the fly, when they are requested.</source>
|
||||
@ -1160,9 +1157,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
</context-group>
|
||||
<target>The shorter edge of the converted photo will be scaled down to this,
|
||||
while
|
||||
keeping the aspect ratio.</target>
|
||||
<target>The shorter edge of the converted photo will be scaled down to this, while keeping the aspect ratio.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4b9cafd261787994f5e6ab5c2fbab785156037ef" datatype="html">
|
||||
<source>Convert photos now</source>
|
||||
@ -1179,8 +1174,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">114</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="219e36c6747ef991081a68fc8ab2678677583e11" datatype="html">
|
||||
<source>Reads and show *.gpx files on the map</source>
|
||||
@ -1268,11 +1262,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/random-photo/random-photo.settings.component.html</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<target>
|
||||
This feature enables you to generate 'random photo' urls.
|
||||
That URL returns a photo random selected from your gallery.
|
||||
You can use the url with 3rd party application like random changing desktop background.
|
||||
</target>
|
||||
<target>This feature enables you to generate 'random photo' urls. That URL returns a photo random selected from your gallery. You can use the url with 3rd party application like random changing desktop background.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6c02e8541a2e670f80de8b5a218ea14a16bb6c42" datatype="html">
|
||||
<source>
|
||||
@ -1759,8 +1749,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
|
||||
<context context-type="linenumber">127</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ab4d309abbd8f981e3157ae6924b1962b69c3e36" datatype="html">
|
||||
<source>Reset Indexes
|
||||
@ -1816,7 +1805,7 @@
|
||||
<trans-unit id="6f905843264b6935f11115fb91b72ce4f2aafd75" datatype="html">
|
||||
<source>Stopping</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">7</context>
|
||||
</context-group>
|
||||
<target>Stopping</target>
|
||||
@ -1824,7 +1813,7 @@
|
||||
<trans-unit id="9f2195bf10299534034510f387621199db784343" datatype="html">
|
||||
<source>time elapsed</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">14</context>
|
||||
</context-group>
|
||||
<target>time elapsed</target>
|
||||
@ -1832,88 +1821,76 @@
|
||||
<trans-unit id="35511807089eb9a1864bec06e28d57e04b4c8f87" datatype="html">
|
||||
<source>time left</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">28</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>time left</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="18443428b116a10f17fbd067bde0553c00db45f1" datatype="html">
|
||||
<source>every</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">17</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">83</context>
|
||||
</context-group>
|
||||
<target>every</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e113e3450a367a1dff703fc5e0403a497ca73a7c" datatype="html">
|
||||
<source>never</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">23</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">22</context>
|
||||
</context-group>
|
||||
<target>never</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b51d9edc98562fb34f39d48bbd177db63f74fe8d" datatype="html">
|
||||
<source>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</source>
|
||||
<trans-unit id="89dc7dff0be8b6a3443789ff1e7469f47d92935e" datatype="html">
|
||||
<source>Job:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</target>
|
||||
<target>Job:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="41f883b96980ad03407749f5c0b2523528924dda" datatype="html">
|
||||
<source>Task:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
</context-group>
|
||||
<target>Task:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9bcffeb5af739217ecbeec01abeb14126b20bdda" datatype="html">
|
||||
<source>Select a task to schedule.
|
||||
<trans-unit id="0b87ca794b645dc89e2efe8478c401c605e03861" datatype="html">
|
||||
<source>Select a job to schedule.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
</context-group>
|
||||
<target>Select a task to schedule.</target>
|
||||
<target>Select a job to schedule.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f336006fe51502c7da913994e14a3137dd5c5009" datatype="html">
|
||||
<source>Periodicity:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">50</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">48</context>
|
||||
</context-group>
|
||||
<target>Periodicity:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="63082f0e453734275af4e538827c1ae06d04ef52" datatype="html">
|
||||
<source>Set the time to run the task.
|
||||
<trans-unit id="40aec3d7895a3d8dafac6fe442e45150769950ae" datatype="html">
|
||||
<source>Set the time to run the job.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">58</context>
|
||||
</context-group>
|
||||
<target>Set the time to run the task.</target>
|
||||
<target>Set the time to run the job.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ef36f0dc0067decf548cc11905ef3100f5bbd004" datatype="html">
|
||||
<source>At:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">67</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">65</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">77</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">75</context>
|
||||
</context-group>
|
||||
<target>At:</target>
|
||||
</trans-unit>
|
||||
@ -1921,44 +1898,45 @@
|
||||
<source>Start now
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">103</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
</context-group>
|
||||
<target>Start now</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="cfbd068646ce959a640ab824e85e1ed3ab20c5f2" datatype="html">
|
||||
<source>Trigger task run manually</source>
|
||||
<trans-unit id="75bfaf8c39c31b82e233afbbc1175d1a49ef172f" datatype="html">
|
||||
<source>Trigger job run manually</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">99</context>
|
||||
</context-group>
|
||||
<target>Trigger task run manually</target>
|
||||
<target>Trigger job run manually</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="493a5cb077ced16ccc13431ea5e2067eb40cd957" datatype="html">
|
||||
<source>Stop
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">108</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">106</context>
|
||||
</context-group>
|
||||
<target>Stop</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="eecad7f2f355d4ae0baed11537a10ceaebbc7382" datatype="html">
|
||||
<source>';' separated integers.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">171</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">169</context>
|
||||
</context-group>
|
||||
<target>';' separated integers.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="87dc7285ddadbe21ac1770275d35e8c747e0eb26" datatype="html">
|
||||
<source>+ Add task
|
||||
<trans-unit id="6ff865ebc673e7fe5ed9367575e44833ef811693" datatype="html">
|
||||
<source>+ Add Job
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">196</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">194</context>
|
||||
</context-group>
|
||||
<target>+ Add task</target>
|
||||
<target>+ Add Job
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="85b9773b9a3caeb9f0fd69b2b8fa7284bda6b492" datatype="html">
|
||||
<source>Server error</source>
|
||||
@ -2063,6 +2041,22 @@
|
||||
</context-group>
|
||||
<target>Simplifié</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f56c1efc2bd6e9eb87cd271ea47ab620445012a2" datatype="html">
|
||||
<source>Built at</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Built at</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f620bdd6f6bdd3330d7f3786caa97cbba9cbde5a" datatype="html">
|
||||
<source>git hash</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>git hash</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">
|
||||
<source>Images</source>
|
||||
<context-group purpose="location">
|
||||
@ -2267,6 +2261,106 @@
|
||||
</context-group>
|
||||
<target>Resetting database</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
|
||||
<source>Jobs</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Jobs</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Monday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tuesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Wednesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Thursday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Friday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Saturday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Sunday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>day</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">
|
||||
<source>Job</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Job</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>started</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>stopped</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="d2a2915d79ff31439a174fc3a147004542291e29" datatype="html">
|
||||
<source>Map</source>
|
||||
<context-group purpose="location">
|
||||
@ -2339,106 +2433,6 @@
|
||||
</context-group>
|
||||
<target>Random Photo</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
|
||||
<source>Tasks</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tasks</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Monday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tuesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Wednesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Thursday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Friday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Saturday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Sunday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>day</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="61435c6c3b3cca0c204ef9f5369027565d327acb" datatype="html">
|
||||
<source>Task</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Task</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>started</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>stopped</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45dda89cf029b7d7b457a8dff01dc4b9a6485816" datatype="html">
|
||||
<source>Thumbnail</source>
|
||||
<context-group purpose="location">
|
||||
|
@ -694,8 +694,8 @@
|
||||
<context context-type="linenumber">170</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">189</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">187</context>
|
||||
</context-group>
|
||||
<target>Mentés</target>
|
||||
</trans-unit>
|
||||
@ -751,8 +751,8 @@
|
||||
<context context-type="linenumber">174</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">193</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">191</context>
|
||||
</context-group>
|
||||
<target>Visszaállítás</target>
|
||||
</trans-unit>
|
||||
@ -871,9 +871,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">56</context>
|
||||
</context-group>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more
|
||||
storage and CPU to render.)
|
||||
</target>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more storage and CPU to render.)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="acee7864683576e1e4f159e725db24ddeee32e1c" datatype="html">
|
||||
<source>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
@ -883,9 +881,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
</context-group>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
pixels.
|
||||
</target>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160 pixels.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5e561ce99009d20e901f7aef3c4f867a519ca9f0" datatype="html">
|
||||
<source>Generate thumbnails now</source>
|
||||
@ -910,8 +906,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">90</context>
|
||||
</context-group>
|
||||
<target>Thumbnail generálás megszakítása
|
||||
</target>
|
||||
<target>Thumbnail generálás megszakítása</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="69149fe434cf1b0d9bafe5ead5d126101bb5162e" datatype="html">
|
||||
<source>Video support uses ffmpeg. ffmpeg and ffprobe binaries need to be available in the PATH or
|
||||
@ -951,8 +946,8 @@
|
||||
</context-group>
|
||||
<target>Az átkonvertált videók a thumbnail mappába lesznek mentve.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9ca8b858f4f19476c64b5f4b6416e8e8210c7f1e" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding task
|
||||
<trans-unit id="5c159049e5e44f672041b3ff2c85328cda14a740" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</source>
|
||||
@ -1152,8 +1147,7 @@
|
||||
<target>Photókat menet közvben konvertálja, amikor kérésre megy rájuk.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9c8c328f075bf04fa34b3ee3f011577929d85fcd" datatype="html">
|
||||
<source>
|
||||
The shorter edge of the converted photo will be scaled down to this,
|
||||
<source>The shorter edge of the converted photo will be scaled down to this,
|
||||
while
|
||||
keeping the aspect ratio.</source>
|
||||
<context-group purpose="location">
|
||||
@ -1177,8 +1171,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">114</context>
|
||||
</context-group>
|
||||
<target>Konvertálás megszakítása
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="219e36c6747ef991081a68fc8ab2678677583e11" datatype="html">
|
||||
<source>Reads and show *.gpx files on the map</source>
|
||||
@ -1266,11 +1259,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/random-photo/random-photo.settings.component.html</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<target>
|
||||
Ez a modul a 'véletlenszerű fotó' utl generálását engedelyezi.
|
||||
Az url egy véletlen fotót ad vissza a galériából.
|
||||
Harmadik fél által készített alkalmazásokhoz használhatód. Pl véletlenszerűen változó háttérkép.
|
||||
</target>
|
||||
<target>Ez a modul a 'véletlenszerű fotó' utl generálását engedelyezi. Az url egy véletlen fotót ad vissza a galériából. Harmadik fél által készített alkalmazásokhoz használhatód. Pl véletlenszerűen változó háttérkép.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6c02e8541a2e670f80de8b5a218ea14a16bb6c42" datatype="html">
|
||||
<source>
|
||||
@ -1757,8 +1746,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
|
||||
<context context-type="linenumber">127</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ab4d309abbd8f981e3157ae6924b1962b69c3e36" datatype="html">
|
||||
<source>Reset Indexes
|
||||
@ -1814,7 +1802,7 @@
|
||||
<trans-unit id="6f905843264b6935f11115fb91b72ce4f2aafd75" datatype="html">
|
||||
<source>Stopping</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">7</context>
|
||||
</context-group>
|
||||
<target>Leállás alatt</target>
|
||||
@ -1822,7 +1810,7 @@
|
||||
<trans-unit id="9f2195bf10299534034510f387621199db784343" datatype="html">
|
||||
<source>time elapsed</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">14</context>
|
||||
</context-group>
|
||||
<target>eltelt idő</target>
|
||||
@ -1830,88 +1818,74 @@
|
||||
<trans-unit id="35511807089eb9a1864bec06e28d57e04b4c8f87" datatype="html">
|
||||
<source>time left</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">28</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>hátramaradt idő</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="18443428b116a10f17fbd067bde0553c00db45f1" datatype="html">
|
||||
<source>every</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">17</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">83</context>
|
||||
</context-group>
|
||||
<target>minden</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e113e3450a367a1dff703fc5e0403a497ca73a7c" datatype="html">
|
||||
<source>never</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">23</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">22</context>
|
||||
</context-group>
|
||||
<target>soha</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b51d9edc98562fb34f39d48bbd177db63f74fe8d" datatype="html">
|
||||
<source>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</source>
|
||||
<trans-unit id="89dc7dff0be8b6a3443789ff1e7469f47d92935e" datatype="html">
|
||||
<source>Job:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</target>
|
||||
<target>Job:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="41f883b96980ad03407749f5c0b2523528924dda" datatype="html">
|
||||
<source>Task:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
</context-group>
|
||||
<target>Feladat:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9bcffeb5af739217ecbeec01abeb14126b20bdda" datatype="html">
|
||||
<source>Select a task to schedule.
|
||||
<trans-unit id="0b87ca794b645dc89e2efe8478c401c605e03861" datatype="html">
|
||||
<source>Select a job to schedule.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
</context-group>
|
||||
<target>Válaszd ki az ütemezendő feladatot.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f336006fe51502c7da913994e14a3137dd5c5009" datatype="html">
|
||||
<source>Periodicity:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">50</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">48</context>
|
||||
</context-group>
|
||||
<target>Gyakoriság:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="63082f0e453734275af4e538827c1ae06d04ef52" datatype="html">
|
||||
<source>Set the time to run the task.
|
||||
<trans-unit id="40aec3d7895a3d8dafac6fe442e45150769950ae" datatype="html">
|
||||
<source>Set the time to run the job.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">58</context>
|
||||
</context-group>
|
||||
<target>Állítsd be, hogy mikos fusson a feladat.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ef36f0dc0067decf548cc11905ef3100f5bbd004" datatype="html">
|
||||
<source>At:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">67</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">65</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">77</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">75</context>
|
||||
</context-group>
|
||||
<target>Ekkor:</target>
|
||||
</trans-unit>
|
||||
@ -1919,16 +1893,16 @@
|
||||
<source>Start now
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">103</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
</context-group>
|
||||
<target>Futtatás most</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="cfbd068646ce959a640ab824e85e1ed3ab20c5f2" datatype="html">
|
||||
<source>Trigger task run manually</source>
|
||||
<trans-unit id="75bfaf8c39c31b82e233afbbc1175d1a49ef172f" datatype="html">
|
||||
<source>Trigger job run manually</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">99</context>
|
||||
</context-group>
|
||||
<target>Manuálisan elnidítja a feladatot</target>
|
||||
</trans-unit>
|
||||
@ -1936,27 +1910,28 @@
|
||||
<source>Stop
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">108</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">106</context>
|
||||
</context-group>
|
||||
<target>Leállítás</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="eecad7f2f355d4ae0baed11537a10ceaebbc7382" datatype="html">
|
||||
<source>';' separated integers.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">171</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">169</context>
|
||||
</context-group>
|
||||
<target>';'-vel elválaszott egész számok.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="87dc7285ddadbe21ac1770275d35e8c747e0eb26" datatype="html">
|
||||
<source>+ Add task
|
||||
<trans-unit id="6ff865ebc673e7fe5ed9367575e44833ef811693" datatype="html">
|
||||
<source>+ Add Job
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">196</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">194</context>
|
||||
</context-group>
|
||||
<target>+ új feladat</target>
|
||||
<target>+ Add Job
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="85b9773b9a3caeb9f0fd69b2b8fa7284bda6b492" datatype="html">
|
||||
<source>Server error</source>
|
||||
@ -2061,6 +2036,22 @@
|
||||
</context-group>
|
||||
<target>Egyszerűsített</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f56c1efc2bd6e9eb87cd271ea47ab620445012a2" datatype="html">
|
||||
<source>Built at</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Build-elve</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f620bdd6f6bdd3330d7f3786caa97cbba9cbde5a" datatype="html">
|
||||
<source>git hash</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>git hash</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">
|
||||
<source>Images</source>
|
||||
<context-group purpose="location">
|
||||
@ -2265,6 +2256,106 @@
|
||||
</context-group>
|
||||
<target>Adatbázis visszaállítása</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
|
||||
<source>Jobs</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Jobs</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Hétfő</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Kedd</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Szerda</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Csütörtök</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Péntek</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Szombat</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Vasárnap</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>nap</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">
|
||||
<source>Job</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Job</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>elindult</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>leállt</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="d2a2915d79ff31439a174fc3a147004542291e29" datatype="html">
|
||||
<source>Map</source>
|
||||
<context-group purpose="location">
|
||||
@ -2337,106 +2428,6 @@
|
||||
</context-group>
|
||||
<target>Véletleg Fotó</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
|
||||
<source>Tasks</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Feladatok</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Hétfő</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Kedd</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Szerda</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Csütörtök</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Péntek</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Szombat</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Vasárnap</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>nap</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="61435c6c3b3cca0c204ef9f5369027565d327acb" datatype="html">
|
||||
<source>Task</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Feladat</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>elindult</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>leállt</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45dda89cf029b7d7b457a8dff01dc4b9a6485816" datatype="html">
|
||||
<source>Thumbnail</source>
|
||||
<context-group purpose="location">
|
||||
|
@ -694,8 +694,8 @@
|
||||
<context context-type="linenumber">170</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">189</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">187</context>
|
||||
</context-group>
|
||||
<target>Salvare</target>
|
||||
</trans-unit>
|
||||
@ -751,8 +751,8 @@
|
||||
<context context-type="linenumber">174</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">193</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">191</context>
|
||||
</context-group>
|
||||
<target>Restabilire</target>
|
||||
</trans-unit>
|
||||
@ -871,9 +871,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">56</context>
|
||||
</context-group>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more
|
||||
storage and CPU to render.)
|
||||
</target>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more storage and CPU to render.)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="acee7864683576e1e4f159e725db24ddeee32e1c" datatype="html">
|
||||
<source>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
@ -883,9 +881,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
</context-group>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
pixels.
|
||||
</target>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160 pixels.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5e561ce99009d20e901f7aef3c4f867a519ca9f0" datatype="html">
|
||||
<source>Generate thumbnails now</source>
|
||||
@ -910,8 +906,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">90</context>
|
||||
</context-group>
|
||||
<target>Cancel thumbnail generation
|
||||
</target>
|
||||
<target>Cancel thumbnail generation</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="69149fe434cf1b0d9bafe5ead5d126101bb5162e" datatype="html">
|
||||
<source>Video support uses ffmpeg. ffmpeg and ffprobe binaries need to be available in the PATH or
|
||||
@ -951,8 +946,8 @@
|
||||
</context-group>
|
||||
<target>The transcoded videos will be save to the thumbnail folder.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9ca8b858f4f19476c64b5f4b6416e8e8210c7f1e" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding task
|
||||
<trans-unit id="5c159049e5e44f672041b3ff2c85328cda14a740" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</source>
|
||||
@ -960,7 +955,10 @@
|
||||
<context context-type="sourcefile">app/ui/settings/video/video.settings.component.html</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<target>You can trigger the transcoding manually, but you can also create an automatic encoding task in advanced settings mode.</target>
|
||||
<target>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7722a92a1fc887570b4f4d8a7bb916f067f32028" datatype="html">
|
||||
<source>Format</source>
|
||||
@ -1133,8 +1131,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">53</context>
|
||||
</context-group>
|
||||
<target>Downsizes photos for faster preview loading. (Zooming in to the photo
|
||||
loads the original)</target>
|
||||
<target>Downsizes photos for faster preview loading. (Zooming in to the photo loads the original)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45becd33ed4f2f1a19f2040b4624968677f7b02b" datatype="html">
|
||||
<source>On the fly converting </source>
|
||||
@ -1142,7 +1139,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">59</context>
|
||||
</context-group>
|
||||
<target>On the fly converting </target>
|
||||
<target>On the fly converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a9a7b9d2773aa49ff4f41b01b55e0a51d664eecf" datatype="html">
|
||||
<source>Converts photos on the fly, when they are requested.</source>
|
||||
@ -1160,9 +1157,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
</context-group>
|
||||
<target>The shorter edge of the converted photo will be scaled down to this,
|
||||
while
|
||||
keeping the aspect ratio.</target>
|
||||
<target>The shorter edge of the converted photo will be scaled down to this, while keeping the aspect ratio.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4b9cafd261787994f5e6ab5c2fbab785156037ef" datatype="html">
|
||||
<source>Convert photos now</source>
|
||||
@ -1179,8 +1174,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">114</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="219e36c6747ef991081a68fc8ab2678677583e11" datatype="html">
|
||||
<source>Reads and show *.gpx files on the map</source>
|
||||
@ -1268,11 +1262,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/random-photo/random-photo.settings.component.html</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<target>
|
||||
This feature enables you to generate 'random photo' urls.
|
||||
That URL returns a photo random selected from your gallery.
|
||||
You can use the url with 3rd party application like random changing desktop background.
|
||||
</target>
|
||||
<target>This feature enables you to generate 'random photo' urls. That URL returns a photo random selected from your gallery. You can use the url with 3rd party application like random changing desktop background.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6c02e8541a2e670f80de8b5a218ea14a16bb6c42" datatype="html">
|
||||
<source>
|
||||
@ -1759,8 +1749,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
|
||||
<context context-type="linenumber">127</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ab4d309abbd8f981e3157ae6924b1962b69c3e36" datatype="html">
|
||||
<source>Reset Indexes
|
||||
@ -1816,7 +1805,7 @@
|
||||
<trans-unit id="6f905843264b6935f11115fb91b72ce4f2aafd75" datatype="html">
|
||||
<source>Stopping</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">7</context>
|
||||
</context-group>
|
||||
<target>Stopping</target>
|
||||
@ -1824,7 +1813,7 @@
|
||||
<trans-unit id="9f2195bf10299534034510f387621199db784343" datatype="html">
|
||||
<source>time elapsed</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">14</context>
|
||||
</context-group>
|
||||
<target>time elapsed</target>
|
||||
@ -1832,88 +1821,76 @@
|
||||
<trans-unit id="35511807089eb9a1864bec06e28d57e04b4c8f87" datatype="html">
|
||||
<source>time left</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">28</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>time left</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="18443428b116a10f17fbd067bde0553c00db45f1" datatype="html">
|
||||
<source>every</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">17</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">83</context>
|
||||
</context-group>
|
||||
<target>every</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e113e3450a367a1dff703fc5e0403a497ca73a7c" datatype="html">
|
||||
<source>never</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">23</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">22</context>
|
||||
</context-group>
|
||||
<target>never</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b51d9edc98562fb34f39d48bbd177db63f74fe8d" datatype="html">
|
||||
<source>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</source>
|
||||
<trans-unit id="89dc7dff0be8b6a3443789ff1e7469f47d92935e" datatype="html">
|
||||
<source>Job:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</target>
|
||||
<target>Job:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="41f883b96980ad03407749f5c0b2523528924dda" datatype="html">
|
||||
<source>Task:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
</context-group>
|
||||
<target>Task:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9bcffeb5af739217ecbeec01abeb14126b20bdda" datatype="html">
|
||||
<source>Select a task to schedule.
|
||||
<trans-unit id="0b87ca794b645dc89e2efe8478c401c605e03861" datatype="html">
|
||||
<source>Select a job to schedule.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
</context-group>
|
||||
<target>Select a task to schedule.</target>
|
||||
<target>Select a job to schedule.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f336006fe51502c7da913994e14a3137dd5c5009" datatype="html">
|
||||
<source>Periodicity:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">50</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">48</context>
|
||||
</context-group>
|
||||
<target>Periodicity:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="63082f0e453734275af4e538827c1ae06d04ef52" datatype="html">
|
||||
<source>Set the time to run the task.
|
||||
<trans-unit id="40aec3d7895a3d8dafac6fe442e45150769950ae" datatype="html">
|
||||
<source>Set the time to run the job.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">58</context>
|
||||
</context-group>
|
||||
<target>Set the time to run the task.</target>
|
||||
<target>Set the time to run the job.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ef36f0dc0067decf548cc11905ef3100f5bbd004" datatype="html">
|
||||
<source>At:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">67</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">65</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">77</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">75</context>
|
||||
</context-group>
|
||||
<target>At:</target>
|
||||
</trans-unit>
|
||||
@ -1921,44 +1898,45 @@
|
||||
<source>Start now
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">103</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
</context-group>
|
||||
<target>Start now</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="cfbd068646ce959a640ab824e85e1ed3ab20c5f2" datatype="html">
|
||||
<source>Trigger task run manually</source>
|
||||
<trans-unit id="75bfaf8c39c31b82e233afbbc1175d1a49ef172f" datatype="html">
|
||||
<source>Trigger job run manually</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">99</context>
|
||||
</context-group>
|
||||
<target>Trigger task run manually</target>
|
||||
<target>Trigger job run manually</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="493a5cb077ced16ccc13431ea5e2067eb40cd957" datatype="html">
|
||||
<source>Stop
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">108</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">106</context>
|
||||
</context-group>
|
||||
<target>Stop</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="eecad7f2f355d4ae0baed11537a10ceaebbc7382" datatype="html">
|
||||
<source>';' separated integers.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">171</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">169</context>
|
||||
</context-group>
|
||||
<target>';' separated integers.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="87dc7285ddadbe21ac1770275d35e8c747e0eb26" datatype="html">
|
||||
<source>+ Add task
|
||||
<trans-unit id="6ff865ebc673e7fe5ed9367575e44833ef811693" datatype="html">
|
||||
<source>+ Add Job
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">196</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">194</context>
|
||||
</context-group>
|
||||
<target>+ Add task</target>
|
||||
<target>+ Add Job
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="85b9773b9a3caeb9f0fd69b2b8fa7284bda6b492" datatype="html">
|
||||
<source>Server error</source>
|
||||
@ -2063,6 +2041,22 @@
|
||||
</context-group>
|
||||
<target>Simplificat</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f56c1efc2bd6e9eb87cd271ea47ab620445012a2" datatype="html">
|
||||
<source>Built at</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Built at</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f620bdd6f6bdd3330d7f3786caa97cbba9cbde5a" datatype="html">
|
||||
<source>git hash</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>git hash</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">
|
||||
<source>Images</source>
|
||||
<context-group purpose="location">
|
||||
@ -2267,6 +2261,106 @@
|
||||
</context-group>
|
||||
<target>Resetting database</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
|
||||
<source>Jobs</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Jobs</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Monday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tuesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Wednesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Thursday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Friday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Saturday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Sunday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>day</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">
|
||||
<source>Job</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Job</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>started</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>stopped</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="d2a2915d79ff31439a174fc3a147004542291e29" datatype="html">
|
||||
<source>Map</source>
|
||||
<context-group purpose="location">
|
||||
@ -2339,106 +2433,6 @@
|
||||
</context-group>
|
||||
<target>Random Photo</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
|
||||
<source>Tasks</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tasks</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Monday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tuesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Wednesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Thursday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Friday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Saturday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Sunday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>day</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="61435c6c3b3cca0c204ef9f5369027565d327acb" datatype="html">
|
||||
<source>Task</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Task</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>started</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>stopped</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45dda89cf029b7d7b457a8dff01dc4b9a6485816" datatype="html">
|
||||
<source>Thumbnail</source>
|
||||
<context-group purpose="location">
|
||||
|
@ -694,8 +694,8 @@
|
||||
<context context-type="linenumber">170</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">189</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">187</context>
|
||||
</context-group>
|
||||
<target>Сохранить</target>
|
||||
</trans-unit>
|
||||
@ -751,8 +751,8 @@
|
||||
<context context-type="linenumber">174</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">193</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">191</context>
|
||||
</context-group>
|
||||
<target>Сбросить</target>
|
||||
</trans-unit>
|
||||
@ -871,9 +871,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">56</context>
|
||||
</context-group>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more
|
||||
storage and CPU to render.)
|
||||
</target>
|
||||
<target>The best matching size will be generated. (More sizes give better quality, but use more storage and CPU to render.)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="acee7864683576e1e4f159e725db24ddeee32e1c" datatype="html">
|
||||
<source>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
@ -883,9 +881,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
</context-group>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160
|
||||
pixels.
|
||||
</target>
|
||||
<target>';' separated integers. If size is 160, that shorter side of the thumbnail will have 160 pixels.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5e561ce99009d20e901f7aef3c4f867a519ca9f0" datatype="html">
|
||||
<source>Generate thumbnails now</source>
|
||||
@ -910,8 +906,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/thumbnail/thumbnail.settings.component.html</context>
|
||||
<context context-type="linenumber">90</context>
|
||||
</context-group>
|
||||
<target>Cancel thumbnail generation
|
||||
</target>
|
||||
<target>Cancel thumbnail generation</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="69149fe434cf1b0d9bafe5ead5d126101bb5162e" datatype="html">
|
||||
<source>Video support uses ffmpeg. ffmpeg and ffprobe binaries need to be available in the PATH or
|
||||
@ -951,8 +946,8 @@
|
||||
</context-group>
|
||||
<target>The transcoded videos will be save to the thumbnail folder.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9ca8b858f4f19476c64b5f4b6416e8e8210c7f1e" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding task
|
||||
<trans-unit id="5c159049e5e44f672041b3ff2c85328cda14a740" datatype="html">
|
||||
<source>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</source>
|
||||
@ -960,7 +955,10 @@
|
||||
<context context-type="sourcefile">app/ui/settings/video/video.settings.component.html</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<target>You can trigger the transcoding manually, but you can also create an automatic encoding task in advanced settings mode.</target>
|
||||
<target>You can trigger the transcoding manually, but you can also create an automatic encoding job
|
||||
in
|
||||
advanced settings mode.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7722a92a1fc887570b4f4d8a7bb916f067f32028" datatype="html">
|
||||
<source>Format</source>
|
||||
@ -1133,8 +1131,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">53</context>
|
||||
</context-group>
|
||||
<target>Downsizes photos for faster preview loading. (Zooming in to the photo
|
||||
loads the original)</target>
|
||||
<target>Downsizes photos for faster preview loading. (Zooming in to the photo loads the original)</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45becd33ed4f2f1a19f2040b4624968677f7b02b" datatype="html">
|
||||
<source>On the fly converting </source>
|
||||
@ -1142,7 +1139,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">59</context>
|
||||
</context-group>
|
||||
<target>On the fly converting </target>
|
||||
<target>On the fly converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a9a7b9d2773aa49ff4f41b01b55e0a51d664eecf" datatype="html">
|
||||
<source>Converts photos on the fly, when they are requested.</source>
|
||||
@ -1160,9 +1157,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
</context-group>
|
||||
<target>The shorter edge of the converted photo will be scaled down to this,
|
||||
while
|
||||
keeping the aspect ratio.</target>
|
||||
<target>The shorter edge of the converted photo will be scaled down to this, while keeping the aspect ratio.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4b9cafd261787994f5e6ab5c2fbab785156037ef" datatype="html">
|
||||
<source>Convert photos now</source>
|
||||
@ -1179,8 +1174,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/photo/photo.settings.component.html</context>
|
||||
<context context-type="linenumber">114</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="219e36c6747ef991081a68fc8ab2678677583e11" datatype="html">
|
||||
<source>Reads and show *.gpx files on the map</source>
|
||||
@ -1268,11 +1262,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/random-photo/random-photo.settings.component.html</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<target>
|
||||
This feature enables you to generate 'random photo' urls.
|
||||
That URL returns a photo random selected from your gallery.
|
||||
You can use the url with 3rd party application like random changing desktop background.
|
||||
</target>
|
||||
<target>This feature enables you to generate 'random photo' urls. That URL returns a photo random selected from your gallery. You can use the url with 3rd party application like random changing desktop background.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6c02e8541a2e670f80de8b5a218ea14a16bb6c42" datatype="html">
|
||||
<source>
|
||||
@ -1759,8 +1749,7 @@
|
||||
<context context-type="sourcefile">app/ui/settings/indexing/indexing.settings.component.html</context>
|
||||
<context context-type="linenumber">127</context>
|
||||
</context-group>
|
||||
<target>Cancel converting
|
||||
</target>
|
||||
<target>Cancel converting</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ab4d309abbd8f981e3157ae6924b1962b69c3e36" datatype="html">
|
||||
<source>Reset Indexes
|
||||
@ -1816,7 +1805,7 @@
|
||||
<trans-unit id="6f905843264b6935f11115fb91b72ce4f2aafd75" datatype="html">
|
||||
<source>Stopping</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">7</context>
|
||||
</context-group>
|
||||
<target>Stopping</target>
|
||||
@ -1824,7 +1813,7 @@
|
||||
<trans-unit id="9f2195bf10299534034510f387621199db784343" datatype="html">
|
||||
<source>time elapsed</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">14</context>
|
||||
</context-group>
|
||||
<target>time elapsed</target>
|
||||
@ -1832,88 +1821,76 @@
|
||||
<trans-unit id="35511807089eb9a1864bec06e28d57e04b4c8f87" datatype="html">
|
||||
<source>time left</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/progress/progress.tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">28</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/progress/job-progress.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>time left</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="18443428b116a10f17fbd067bde0553c00db45f1" datatype="html">
|
||||
<source>every</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">17</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">85</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">83</context>
|
||||
</context-group>
|
||||
<target>every</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e113e3450a367a1dff703fc5e0403a497ca73a7c" datatype="html">
|
||||
<source>never</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">23</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">22</context>
|
||||
</context-group>
|
||||
<target>never</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b51d9edc98562fb34f39d48bbd177db63f74fe8d" datatype="html">
|
||||
<source>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</source>
|
||||
<trans-unit id="89dc7dff0be8b6a3443789ff1e7469f47d92935e" datatype="html">
|
||||
<source>Job:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
</context-group>
|
||||
<target>
|
||||
<x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>
|
||||
<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>
|
||||
</target>
|
||||
<target>Job:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="41f883b96980ad03407749f5c0b2523528924dda" datatype="html">
|
||||
<source>Task:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
</context-group>
|
||||
<target>Task:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9bcffeb5af739217ecbeec01abeb14126b20bdda" datatype="html">
|
||||
<source>Select a task to schedule.
|
||||
<trans-unit id="0b87ca794b645dc89e2efe8478c401c605e03861" datatype="html">
|
||||
<source>Select a job to schedule.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
</context-group>
|
||||
<target>Select a task to schedule.</target>
|
||||
<target>Select a job to schedule.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f336006fe51502c7da913994e14a3137dd5c5009" datatype="html">
|
||||
<source>Periodicity:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">50</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">48</context>
|
||||
</context-group>
|
||||
<target>Periodicity:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="63082f0e453734275af4e538827c1ae06d04ef52" datatype="html">
|
||||
<source>Set the time to run the task.
|
||||
<trans-unit id="40aec3d7895a3d8dafac6fe442e45150769950ae" datatype="html">
|
||||
<source>Set the time to run the job.
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">58</context>
|
||||
</context-group>
|
||||
<target>Set the time to run the task.</target>
|
||||
<target>Set the time to run the job.
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ef36f0dc0067decf548cc11905ef3100f5bbd004" datatype="html">
|
||||
<source>At:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">67</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">65</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">77</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">75</context>
|
||||
</context-group>
|
||||
<target>At:</target>
|
||||
</trans-unit>
|
||||
@ -1921,44 +1898,45 @@
|
||||
<source>Start now
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">103</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
</context-group>
|
||||
<target>Start now</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="cfbd068646ce959a640ab824e85e1ed3ab20c5f2" datatype="html">
|
||||
<source>Trigger task run manually</source>
|
||||
<trans-unit id="75bfaf8c39c31b82e233afbbc1175d1a49ef172f" datatype="html">
|
||||
<source>Trigger job run manually</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">99</context>
|
||||
</context-group>
|
||||
<target>Trigger task run manually</target>
|
||||
<target>Trigger job run manually</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="493a5cb077ced16ccc13431ea5e2067eb40cd957" datatype="html">
|
||||
<source>Stop
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">108</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">106</context>
|
||||
</context-group>
|
||||
<target>Stop</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="eecad7f2f355d4ae0baed11537a10ceaebbc7382" datatype="html">
|
||||
<source>';' separated integers.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">171</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">169</context>
|
||||
</context-group>
|
||||
<target>';' separated integers.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="87dc7285ddadbe21ac1770275d35e8c747e0eb26" datatype="html">
|
||||
<source>+ Add task
|
||||
<trans-unit id="6ff865ebc673e7fe5ed9367575e44833ef811693" datatype="html">
|
||||
<source>+ Add Job
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/ui/settings/tasks/tasks.settings.component.html</context>
|
||||
<context context-type="linenumber">196</context>
|
||||
<context context-type="sourcefile">app/ui/settings/jobs/jobs.settings.component.html</context>
|
||||
<context context-type="linenumber">194</context>
|
||||
</context-group>
|
||||
<target>+ Add task</target>
|
||||
<target>+ Add Job
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="85b9773b9a3caeb9f0fd69b2b8fa7284bda6b492" datatype="html">
|
||||
<source>Server error</source>
|
||||
@ -2063,6 +2041,22 @@
|
||||
</context-group>
|
||||
<target>Simplified</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f56c1efc2bd6e9eb87cd271ea47ab620445012a2" datatype="html">
|
||||
<source>Built at</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Built at</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f620bdd6f6bdd3330d7f3786caa97cbba9cbde5a" datatype="html">
|
||||
<source>git hash</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>git hash</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">
|
||||
<source>Images</source>
|
||||
<context-group purpose="location">
|
||||
@ -2267,6 +2261,106 @@
|
||||
</context-group>
|
||||
<target>Resetting database</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="43f1cc191ebc0b8ce89f6916aa634f5a57158798" datatype="html">
|
||||
<source>Jobs</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Jobs</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Monday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tuesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Wednesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Thursday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Friday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Saturday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Sunday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>day</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">
|
||||
<source>Job</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Job</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>started</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/jobs/jobs.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>stopped</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="d2a2915d79ff31439a174fc3a147004542291e29" datatype="html">
|
||||
<source>Map</source>
|
||||
<context-group purpose="location">
|
||||
@ -2339,106 +2433,6 @@
|
||||
</context-group>
|
||||
<target>Random Photo</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
|
||||
<source>Tasks</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tasks</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="a43c57a7cbebf57eb33a2eae5e994c91d9887596" datatype="html">
|
||||
<source>Monday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Monday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="48a2a35957ce394eb2c59ae35c99642360af70ee" datatype="html">
|
||||
<source>Tuesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Tuesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="b0af441f9ba8b82952b9ec10fb8c62e8fec67df9" datatype="html">
|
||||
<source>Wednesday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Wednesday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="55c583b99c809818ec27df065ccf05357a6ac10b" datatype="html">
|
||||
<source>Thursday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Thursday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="e91b54925dc5f490753f60f53ef6f8b4609e6215" datatype="html">
|
||||
<source>Friday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Friday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c0d2dd391a3eca8e841a5d0e035cd268280eb68e" datatype="html">
|
||||
<source>Saturday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Saturday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8339364b054610983b7f2334bb807fff7613bddf" datatype="html">
|
||||
<source>Sunday</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Sunday</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f64c76c7c7c71baddef3dc6a93e4394b8fdb69f4" datatype="html">
|
||||
<source>day</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>day</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="61435c6c3b3cca0c204ef9f5369027565d327acb" datatype="html">
|
||||
<source>Task</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Task</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="802a1b81a26fd41f8625b1b7a02f606fc31f97e7" datatype="html">
|
||||
<source>started</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>started</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="0f3ebb12666577c4183f3c9687180f7963cfabf4" datatype="html">
|
||||
<source>stopped</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/frontend/app/ui/settings/tasks/tasks.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>stopped</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45dda89cf029b7d7b457a8dff01dc4b9a6485816" datatype="html">
|
||||
<source>Thumbnail</source>
|
||||
<context-group purpose="location">
|
||||
|
@ -1,25 +1,25 @@
|
||||
import {expect} from 'chai';
|
||||
import {TaskManager} from '../../../../../src/backend/model/tasks/TaskManager';
|
||||
import {TaskScheduleDTO, TaskTriggerType} from '../../../../../src/common/entities/task/TaskScheduleDTO';
|
||||
import {JobManager} from '../../../../../src/backend/model/jobs/JobManager';
|
||||
import {JobScheduleDTO, JobTriggerType} from '../../../../../src/common/entities/job/JobScheduleDTO';
|
||||
|
||||
class TaskManagerSpec extends TaskManager {
|
||||
class JobManagerSpec extends JobManager {
|
||||
|
||||
public getDateFromSchedule(refDate: Date, schedule: TaskScheduleDTO): Date {
|
||||
public getDateFromSchedule(refDate: Date, schedule: JobScheduleDTO): Date {
|
||||
return super.getDateFromSchedule(refDate, schedule);
|
||||
}
|
||||
}
|
||||
|
||||
describe('TaskManager', () => {
|
||||
describe('JobManager', () => {
|
||||
|
||||
it('should get date from schedule', async () => {
|
||||
const tm = new TaskManagerSpec();
|
||||
const tm = new JobManagerSpec();
|
||||
|
||||
const refDate = new Date(2019, 7, 18, 5, 10, 10, 0); // its a sunday
|
||||
|
||||
|
||||
expect(tm.getDateFromSchedule(refDate, <any>{
|
||||
trigger: {
|
||||
type: TaskTriggerType.scheduled,
|
||||
type: JobTriggerType.scheduled,
|
||||
time: (new Date(2019, 7, 18, 5, 10)).getTime()
|
||||
}
|
||||
})).to.be.deep.equal((new Date(2019, 7, 18, 5, 10, 0)));
|
||||
@ -32,7 +32,7 @@ describe('TaskManager', () => {
|
||||
let m = 5;
|
||||
expect(tm.getDateFromSchedule(refDate, <any>{
|
||||
trigger: {
|
||||
type: TaskTriggerType.periodic,
|
||||
type: JobTriggerType.periodic,
|
||||
atTime: (h * 60 + m) * 60 * 1000,
|
||||
periodicity: dayOfWeek
|
||||
}
|
||||
@ -43,7 +43,7 @@ describe('TaskManager', () => {
|
||||
nextDay = 18 + dayOfWeek + 1;
|
||||
expect(tm.getDateFromSchedule(refDate, <any>{
|
||||
trigger: {
|
||||
type: TaskTriggerType.periodic,
|
||||
type: JobTriggerType.periodic,
|
||||
atTime: (h * 60 + m) * 60 * 1000,
|
||||
periodicity: dayOfWeek
|
||||
}
|
||||
@ -54,7 +54,7 @@ describe('TaskManager', () => {
|
||||
nextDay = 18 + dayOfWeek + 1;
|
||||
expect(tm.getDateFromSchedule(refDate, <any>{
|
||||
trigger: {
|
||||
type: TaskTriggerType.periodic,
|
||||
type: JobTriggerType.periodic,
|
||||
atTime: (h * 60 + m) * 60 * 1000,
|
||||
periodicity: dayOfWeek
|
||||
}
|
||||
@ -66,7 +66,7 @@ describe('TaskManager', () => {
|
||||
const m = 5;
|
||||
expect(tm.getDateFromSchedule(refDate, <any>{
|
||||
trigger: {
|
||||
type: TaskTriggerType.periodic,
|
||||
type: JobTriggerType.periodic,
|
||||
atTime: (h * 60 + m) * 60 * 1000,
|
||||
periodicity: 7
|
||||
}
|
||||
@ -77,7 +77,7 @@ describe('TaskManager', () => {
|
||||
const m = 5;
|
||||
expect(tm.getDateFromSchedule(refDate, <any>{
|
||||
trigger: {
|
||||
type: TaskTriggerType.periodic,
|
||||
type: JobTriggerType.periodic,
|
||||
atTime: (h * 60 + m) * 60 * 1000,
|
||||
periodicity: 7
|
||||
}
|
||||
|
@ -24,6 +24,6 @@ describe('TaskQue', () => {
|
||||
const task = tq.get();
|
||||
tq.ready(task);
|
||||
expect(tq.isEmpty()).to.be.equal(true);
|
||||
expect(tq.ready.bind(tq, task)).to.be.throw('Task does not exist');
|
||||
expect(tq.ready.bind(tq, task)).to.be.throw('Job does not exist');
|
||||
});
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user