Skip to content

Commit fd0fdaf

Browse files
committed
add untranslated badgebadge
1 parent 4ca6634 commit fd0fdaf

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
# Added
1111

1212
- Command to generate typescript models `npx -y adminforth generate-models --env-file=.env`
13+
- add i18n support: add vue-i18n to frontend and tr function to backend. This will allow to implement translation plugins
1314

1415
# Improved
1516

adminforth/plugins/i18n/index.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import AdminForth, { AdminForthPlugin, Filters, suggestIfTypo, AdminForthDataTypes } from "adminforth";
2-
import type { IAdminForth, IHttpServer, AdminForthComponentDeclaration, AdminForthResourceColumn, AdminForthResource, BeforeLoginConfirmationFunction } from "adminforth";
2+
import type { IAdminForth, IHttpServer, AdminForthComponentDeclaration, AdminForthResourceColumn, AdminForthResource, BeforeLoginConfirmationFunction, AdminForthConfigMenuItem } from "adminforth";
33
import type { PluginOptions } from './types.js';
44
import iso6391, { LanguageCode } from 'iso-639-1';
55
import path from 'path';
@@ -147,7 +147,7 @@ export default class I18N extends AdminForthPlugin {
147147
column.showIn = [];
148148

149149
// add virtual field for incomplete
150-
resourceConfig.columns.push({
150+
resourceConfig.columns.unshift({
151151
name: 'fully_translated',
152152
label: 'Fully translated',
153153
virtual: true,
@@ -294,6 +294,30 @@ export default class I18N extends AdminForthPlugin {
294294
}
295295
);
296296
};
297+
298+
299+
// if there is menu item with resourceId, add .badge function showing number of untranslated strings
300+
301+
const addBadgeCountToMenuItem = (menuItem: AdminForthConfigMenuItem) => {
302+
console.log('🪲menuItem, registring ', menuItem);
303+
menuItem.badge = async () => {
304+
const resource = adminforth.resource(menuItem.resourceId);
305+
const count = await resource.count([Filters.NEQ(this.options.completedFieldName, this.fullCompleatedFieldValue)]);
306+
return `${count}`;
307+
};
308+
}
309+
adminforth.config.menu.forEach((menuItem) => {
310+
if (menuItem.resourceId === resourceConfig.resourceId) {
311+
addBadgeCountToMenuItem(menuItem);
312+
}
313+
if (menuItem.children) {
314+
menuItem.children.forEach((child) => {
315+
if (child.resourceId === resourceConfig.resourceId) {
316+
addBadgeCountToMenuItem(child);
317+
}
318+
});
319+
}
320+
});
297321
}
298322

299323
async bulkTranslate({ selectedIds }: { selectedIds: string[] }) {

dev-demo/resources/translation.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import I18nPlugin from "../../adminforth/plugins/i18n";
77
import { v1 as uuid } from "uuid";
88

99

10-
1110
export default {
1211
dataSource: "maindb",
1312
table: "translations",

0 commit comments

Comments
 (0)