diff --git a/src/main/webapp/app/module/primary/module-properties/ModuleProperties.component.ts b/src/main/webapp/app/module/primary/module-properties/ModuleProperties.component.ts new file mode 100644 index 00000000000..72698b0a9a0 --- /dev/null +++ b/src/main/webapp/app/module/primary/module-properties/ModuleProperties.component.ts @@ -0,0 +1,49 @@ +import { ModuleProperty } from '@/module/domain/ModuleProperty'; +import { defineComponent, PropType } from 'vue'; + +export default defineComponent({ + name: 'ModulePropertiesVue', + props: { + properties: { + type: Array as PropType>, + required: true, + }, + moduleSlug: { + type: String, + required: true, + }, + moduleProperties: { + type: Map, + required: true, + }, + propertiesType: { + type: String, + required: true, + }, + }, + setup(props) { + const propertiesStats = (): string => { + return `${propertiesWithValueCount()} / ${props.properties.length}`; + }; + + const propertiesWithValueCount = (): number => { + return props.properties.filter(property => notEmpty(props.moduleProperties.get(property.key))).length; + }; + + return { + propertiesStats, + }; + }, +}); + +function notEmpty(value: string | number | boolean | undefined): boolean { + if (value === undefined) { + return false; + } + + if (typeof value === 'string') { + return value.trim().length !== 0; + } + + return true; +} diff --git a/src/main/webapp/app/module/primary/module-properties/ModuleProperties.html b/src/main/webapp/app/module/primary/module-properties/ModuleProperties.html new file mode 100644 index 00000000000..6589a29a6bc --- /dev/null +++ b/src/main/webapp/app/module/primary/module-properties/ModuleProperties.html @@ -0,0 +1,12 @@ +
+
+ {{ propertiesType }} +
{{ propertiesStats() }}
+
+
+
{{ property.key }}
+
+ {{ moduleProperties.get(property.key) }} +
+
+
diff --git a/src/main/webapp/app/module/primary/module-properties/ModuleProperties.vue b/src/main/webapp/app/module/primary/module-properties/ModuleProperties.vue new file mode 100644 index 00000000000..9a8de9de059 --- /dev/null +++ b/src/main/webapp/app/module/primary/module-properties/ModuleProperties.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/main/webapp/app/module/primary/module-properties/index.ts b/src/main/webapp/app/module/primary/module-properties/index.ts new file mode 100644 index 00000000000..792fee4cb27 --- /dev/null +++ b/src/main/webapp/app/module/primary/module-properties/index.ts @@ -0,0 +1,3 @@ +import ModulePropertiesVue from './ModuleProperties.vue'; + +export { ModulePropertiesVue }; diff --git a/src/main/webapp/app/module/primary/modules/Modules.component.ts b/src/main/webapp/app/module/primary/modules/Modules.component.ts index 2769e0c986c..2d0b0e9127b 100644 --- a/src/main/webapp/app/module/primary/modules/Modules.component.ts +++ b/src/main/webapp/app/module/primary/modules/Modules.component.ts @@ -1,3 +1,4 @@ +import { ModulePropertiesVue } from '../module-properties'; import { AlertBus } from '@/common/domain/alert/AlertBus'; import { Loader } from '@/loader/primary/Loader'; import { Category } from '@/module/domain/Category'; @@ -9,6 +10,7 @@ import { defineComponent, inject, onMounted, reactive, ref } from 'vue'; export default defineComponent({ name: 'ModulesVue', + components: { ModulePropertiesVue }, setup() { const alertBus = inject('alertBus') as AlertBus; const modules = inject('modules') as ModulesRepository; diff --git a/src/main/webapp/app/module/primary/modules/Modules.html b/src/main/webapp/app/module/primary/modules/Modules.html index a2534e5f80e..485b8c17542 100644 --- a/src/main/webapp/app/module/primary/modules/Modules.html +++ b/src/main/webapp/app/module/primary/modules/Modules.html @@ -97,23 +97,18 @@

{{ category.name }}

{{ module.slug }}
{{ module.description}}
-
-
-
{{ property.key }}
-
- {{ moduleProperties.get(property.key) }} -
-
-
- -
-
-
{{ property.key }}
-
- {{ moduleProperties.get(property.key) }} -
-
-
+ +