Merge branch 'master' into dev
This commit is contained in:
commit
2db9fe67f4
@ -75,23 +75,23 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div
|
<div
|
||||||
*ngIf="licenseService.totalInfo.startDate | date : 'longDate' as startDate"
|
*ngIf="licenseService.annualInfo.startDate | date : 'longDate' as startDate"
|
||||||
[innerHTML]="'license-info-screen.total-analyzed' | translate : { date: startDate }"
|
[innerHTML]="'license-info-screen.total-analyzed' | translate : { date: startDate }"
|
||||||
></div>
|
></div>
|
||||||
<div>{{ licenseService.totalInfo.numberOfAnalyzedPages }}</div>
|
<div>{{ licenseService.annualInfo.numberOfAnalyzedPages }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div translate="license-info-screen.current-analyzed"></div>
|
<div translate="license-info-screen.current-analyzed"></div>
|
||||||
<div>
|
<div>
|
||||||
{{ licenseService.currentInfo.numberOfAnalyzedPages }}
|
{{ licenseService.analyzedPagesInCurrentLicensingPeriod }}
|
||||||
({{ analysisPercentageOfLicense$ | async | number : '1.0-2' }}%)
|
({{ analysisPercentageOfLicense$ | async | number : '1.0-2' }}%)
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="!!licenseService.unlicensedInfo" class="row">
|
<div *ngIf="!!licenseService.unlicensedPages" class="row">
|
||||||
<div translate="license-info-screen.unlicensed-analyzed"></div>
|
<div translate="license-info-screen.unlicensed-analyzed"></div>
|
||||||
<div>{{ licenseService.unlicensedInfo.numberOfAnalyzedPages }}</div>
|
<div>{{ licenseService.unlicensedPages }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -50,7 +50,7 @@ export class LicenseScreenComponent {
|
|||||||
|
|
||||||
getAnalysisPercentageOfLicense() {
|
getAnalysisPercentageOfLicense() {
|
||||||
const totalLicensedNumberOfPages = this.licenseService.totalLicensedNumberOfPages;
|
const totalLicensedNumberOfPages = this.licenseService.totalLicensedNumberOfPages;
|
||||||
const numberOfAnalyzedPages = this.licenseService.currentInfo.numberOfAnalyzedPages;
|
const numberOfAnalyzedPages = this.licenseService.analyzedPagesInCurrentLicensingPeriod;
|
||||||
return totalLicensedNumberOfPages > 0 ? (numberOfAnalyzedPages / totalLicensedNumberOfPages) * 100 : 100;
|
return totalLicensedNumberOfPages > 0 ? (numberOfAnalyzedPages / totalLicensedNumberOfPages) * 100 : 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -51,20 +51,16 @@ export class LicenseService extends GenericService<ILicenseReport> {
|
|||||||
activeLicenseId: string;
|
activeLicenseId: string;
|
||||||
totalLicensedNumberOfPages = 0;
|
totalLicensedNumberOfPages = 0;
|
||||||
currentInfo: ILicenseReport = {};
|
currentInfo: ILicenseReport = {};
|
||||||
totalInfo: ILicenseReport = {};
|
annualInfo: ILicenseReport = {};
|
||||||
unlicensedInfo: ILicenseReport = {};
|
unlicensedPages = 0;
|
||||||
|
analyzedPagesInCurrentLicensingPeriod = 0;
|
||||||
protected readonly _defaultModelPath = 'report';
|
protected readonly _defaultModelPath = 'report';
|
||||||
readonly #licenseData$ = new BehaviorSubject<ILicenses | undefined>(undefined);
|
readonly #licenseData$ = new BehaviorSubject<ILicenses | undefined>(undefined);
|
||||||
readonly #selectedLicense$ = new BehaviorSubject<ILicense | undefined>(undefined);
|
readonly #selectedLicense$ = new BehaviorSubject<ILicense | undefined>(undefined);
|
||||||
|
|
||||||
constructor(private readonly _logger: NGXLogger) {
|
constructor(private readonly _logger: NGXLogger) {
|
||||||
super();
|
super();
|
||||||
this.selectedLicense$ = this.#selectedLicense$.pipe(
|
this.selectedLicense$ = this.#selectedLicense$.pipe(filter(license => !!license));
|
||||||
filter(license => !!license),
|
|
||||||
tap(license => {
|
|
||||||
this.totalLicensedNumberOfPages = this.getTotalLicensedNumberOfPages(license);
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
this.licenseData$ = this.#licenseData$.pipe(
|
this.licenseData$ = this.#licenseData$.pipe(
|
||||||
filter(licenses => !!licenses),
|
filter(licenses => !!licenses),
|
||||||
tap(data => (this.activeLicenseId = data.activeLicense)),
|
tap(data => (this.activeLicenseId = data.activeLicense)),
|
||||||
@ -95,6 +91,8 @@ export class LicenseService extends GenericService<ILicenseReport> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async loadLicenseData(license: ILicense = this.selectedLicense) {
|
async loadLicenseData(license: ILicense = this.selectedLicense) {
|
||||||
|
this.totalLicensedNumberOfPages = this.getTotalLicensedNumberOfPages(license);
|
||||||
|
|
||||||
const startDate = dayjs(license.validFrom);
|
const startDate = dayjs(license.validFrom);
|
||||||
const endDate = dayjs(license.validUntil);
|
const endDate = dayjs(license.validUntil);
|
||||||
|
|
||||||
@ -102,16 +100,23 @@ export class LicenseService extends GenericService<ILicenseReport> {
|
|||||||
startDate: startDate.toDate(),
|
startDate: startDate.toDate(),
|
||||||
endDate: endDate.toDate(),
|
endDate: endDate.toDate(),
|
||||||
};
|
};
|
||||||
const reports: Promise<ILicenseReport>[] = [this.getReport(currentConfig), this.getReport({})];
|
|
||||||
|
|
||||||
if (endDate.isBefore(dayjs())) {
|
const thisYearConfig = {
|
||||||
const unlicensedConfig = {
|
startDate: `${startDate.year()}-01-01T00:00:00.000Z`,
|
||||||
startDate: endDate.toDate(),
|
endDate: `${startDate.year()}-12-31T00:00:00.000Z`,
|
||||||
};
|
};
|
||||||
reports.push(this.getReport(unlicensedConfig));
|
const configs = [currentConfig, thisYearConfig];
|
||||||
|
const reports = configs.map(config => this.getReport(config));
|
||||||
|
|
||||||
|
[this.currentInfo, this.annualInfo] = await Promise.all(reports);
|
||||||
|
|
||||||
|
if (this.currentInfo.numberOfAnalyzedPages > this.totalLicensedNumberOfPages) {
|
||||||
|
this.unlicensedPages = this.currentInfo.numberOfAnalyzedPages - this.totalLicensedNumberOfPages;
|
||||||
|
this.analyzedPagesInCurrentLicensingPeriod = this.totalLicensedNumberOfPages;
|
||||||
|
} else {
|
||||||
|
this.unlicensedPages = 0;
|
||||||
|
this.analyzedPagesInCurrentLicensingPeriod = this.currentInfo.numberOfAnalyzedPages;
|
||||||
}
|
}
|
||||||
|
|
||||||
[this.currentInfo, this.totalInfo, this.unlicensedInfo] = await Promise.all(reports);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getTotalLicensedNumberOfPages(license: ILicense) {
|
getTotalLicensedNumberOfPages(license: ILicense) {
|
||||||
|
|||||||
@ -13,6 +13,10 @@ import dayjs from 'dayjs';
|
|||||||
|
|
||||||
const INCLUDE_SEEN = false;
|
const INCLUDE_SEEN = false;
|
||||||
|
|
||||||
|
const AVAILABLE_NOTIFICATIONS_DAYS = 30;
|
||||||
|
const AVAILABLE_OLD_NOTIFICATIONS_MINUTES = 60;
|
||||||
|
const NOTIFICATIONS_THRESHOLD = 1000;
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
@ -81,14 +85,30 @@ export class NotificationsService extends EntitiesService<INotification, Notific
|
|||||||
}
|
}
|
||||||
|
|
||||||
const creationDate = dayjs(n.creationDate);
|
const creationDate = dayjs(n.creationDate);
|
||||||
if (todayDate.diff(creationDate, 'day') <= this.#config.AVAILABLE_NOTIFICATIONS_DAYS) {
|
if (todayDate.diff(creationDate, 'day') <= (this.#config.AVAILABLE_NOTIFICATIONS_DAYS ?? AVAILABLE_NOTIFICATIONS_DAYS)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return todayDate.diff(readDate, 'minute') <= this.#config.AVAILABLE_OLD_NOTIFICATIONS_MINUTES;
|
console.log('------------------------------------------------------------------------------');
|
||||||
|
console.log('id: ', n.id);
|
||||||
|
console.log('today date: ', todayDate);
|
||||||
|
console.log('read date: ', readDate);
|
||||||
|
console.log('diff in minutes: ', todayDate.diff(readDate, 'minute'));
|
||||||
|
console.log(
|
||||||
|
'should be shown: ',
|
||||||
|
todayDate.diff(readDate, 'minute') <=
|
||||||
|
(this.#config.AVAILABLE_OLD_NOTIFICATIONS_MINUTES ?? AVAILABLE_OLD_NOTIFICATIONS_MINUTES),
|
||||||
|
);
|
||||||
|
console.log('CONFIG AVAILABLE_OLD_NOTIFICATIONS_MINUTES: ', this.#config.AVAILABLE_OLD_NOTIFICATIONS_MINUTES);
|
||||||
|
console.log('DEFAULT AVAILABLE_OLD_NOTIFICATIONS_MINUTES: ', AVAILABLE_OLD_NOTIFICATIONS_MINUTES);
|
||||||
|
|
||||||
|
return (
|
||||||
|
todayDate.diff(readDate, 'minute') <=
|
||||||
|
(this.#config.AVAILABLE_OLD_NOTIFICATIONS_MINUTES ?? AVAILABLE_OLD_NOTIFICATIONS_MINUTES)
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
return notifications.slice(0, this.#config.NOTIFICATIONS_THRESHOLD);
|
return notifications.slice(0, this.#config.NOTIFICATIONS_THRESHOLD ?? NOTIFICATIONS_THRESHOLD);
|
||||||
}
|
}
|
||||||
|
|
||||||
#loadNotificationsIfChanged(): Observable<Notification[]> {
|
#loadNotificationsIfChanged(): Observable<Notification[]> {
|
||||||
|
|||||||
@ -18,6 +18,9 @@ RECENT_PERIOD_IN_HOURS="${RECENT_PERIOD_IN_HOURS:-24}"
|
|||||||
SELECTION_MODE="${SELECTION_MODE:-structural}"
|
SELECTION_MODE="${SELECTION_MODE:-structural}"
|
||||||
MANUAL_BASE_URL="${MANUAL_BASE_URL:-https://docs.redactmanager.com/preview}"
|
MANUAL_BASE_URL="${MANUAL_BASE_URL:-https://docs.redactmanager.com/preview}"
|
||||||
ANNOTATIONS_THRESHOLD="${ANNOTATIONS_THRESHOLD:-1000}"
|
ANNOTATIONS_THRESHOLD="${ANNOTATIONS_THRESHOLD:-1000}"
|
||||||
|
AVAILABLE_NOTIFICATIONS_DAYS="${AVAILABLE_NOTIFICATIONS_DAYS:-30}"
|
||||||
|
AVAILABLE_OLD_NOTIFICATIONS_MINUTES="${AVAILABLE_OLD_NOTIFICATIONS_MINUTES:-60}"
|
||||||
|
NOTIFICATIONS_THRESHOLD="${NOTIFICATIONS_THRESHOLD:-1000}"
|
||||||
BASE_TRANSLATIONS_DIRECTORY="${BASE_TRANSLATIONS_DIRECTORY:-/assets/i18n/redact/}"
|
BASE_TRANSLATIONS_DIRECTORY="${BASE_TRANSLATIONS_DIRECTORY:-/assets/i18n/redact/}"
|
||||||
THEME="${THEME:-theme-template}"
|
THEME="${THEME:-theme-template}"
|
||||||
|
|
||||||
@ -42,7 +45,10 @@ echo '{
|
|||||||
"MANUAL_BASE_URL":"'"$MANUAL_BASE_URL"'",
|
"MANUAL_BASE_URL":"'"$MANUAL_BASE_URL"'",
|
||||||
"BASE_TRANSLATIONS_DIRECTORY":"'"$BASE_TRANSLATIONS_DIRECTORY"'",
|
"BASE_TRANSLATIONS_DIRECTORY":"'"$BASE_TRANSLATIONS_DIRECTORY"'",
|
||||||
"THEME":"'"$THEME"'",
|
"THEME":"'"$THEME"'",
|
||||||
"ANNOTATIONS_THRESHOLD":"'"$ANNOTATIONS_THRESHOLD"'"
|
"ANNOTATIONS_THRESHOLD":"'"$ANNOTATIONS_THRESHOLD"'",
|
||||||
|
"AVAILABLE_NOTIFICATIONS_DAYS":"'"$AVAILABLE_NOTIFICATIONS_DAYS"'",
|
||||||
|
"AVAILABLE_OLD_NOTIFICATIONS_MINUTES":"'"$AVAILABLE_OLD_NOTIFICATIONS_MINUTES"'",
|
||||||
|
"NOTIFICATIONS_THRESHOLD":"'"$NOTIFICATIONS_THRESHOLD"'"
|
||||||
}' > /usr/share/nginx/html/ui/assets/config/config.json
|
}' > /usr/share/nginx/html/ui/assets/config/config.json
|
||||||
|
|
||||||
echo 'Env variables: '
|
echo 'Env variables: '
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { List } from '@iqser/common-ui';
|
|||||||
|
|
||||||
export interface ILicenseReportRequest {
|
export interface ILicenseReportRequest {
|
||||||
dossierIds?: List;
|
dossierIds?: List;
|
||||||
endDate?: Date;
|
endDate?: Date | string;
|
||||||
requestId?: string;
|
requestId?: string;
|
||||||
startDate?: Date;
|
startDate?: Date | string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "redaction",
|
"name": "redaction",
|
||||||
"version": "3.977.0",
|
"version": "3.983.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user