|
1 | 1 | 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"; |
3 | 3 | import type { PluginOptions } from './types.js'; |
4 | 4 | import iso6391, { LanguageCode } from 'iso-639-1'; |
5 | 5 | import path from 'path'; |
@@ -147,7 +147,7 @@ export default class I18N extends AdminForthPlugin { |
147 | 147 | column.showIn = []; |
148 | 148 |
|
149 | 149 | // add virtual field for incomplete |
150 | | - resourceConfig.columns.push({ |
| 150 | + resourceConfig.columns.unshift({ |
151 | 151 | name: 'fully_translated', |
152 | 152 | label: 'Fully translated', |
153 | 153 | virtual: true, |
@@ -294,6 +294,30 @@ export default class I18N extends AdminForthPlugin { |
294 | 294 | } |
295 | 295 | ); |
296 | 296 | }; |
| 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 | + }); |
297 | 321 | } |
298 | 322 |
|
299 | 323 | async bulkTranslate({ selectedIds }: { selectedIds: string[] }) { |
|
0 commit comments