Wstęp
Wtyczka umożliwia zarządzanie konfiguracjami (plikami konfiguracyjnymi) wtyczek zainstalowanych w systemie. Zamiast tworzenia dedykowanej zakładki do wgrywania/zmiany plików konfiguracyjnych dla każdej wtyczki z osobna, można zintegrować ją z PCM, która umożliwi użytkownikowi zmianę plików konfiguracyjnych dla wszystkich wtyczek w jednym miejscu.
Integracja z wtyczką
Aby zintegrować dowolną wtyczkę z PCM, należy dodać znacznik plugin-configuration w deskryptorze wtyczki - plik suncode-plugin.xml.
Przykładowy wpis w deskryptorze wtyczki:
<plugin-configuration key="plugin-configuration"
template-provider="com.suncode.plugin.somepluginid.TemplateProviderImpl"
change-listener="com.suncode.plugin.somepluginid.ChangeListenerImpl"
allow-file-management="false"
graphic-schema-provider="com.suncode.plugin.somepluginid.ConfigurationFileGraphicSchemaProviderImpl"
init-configuration="com.suncode.plugin.somepluginid.InitConfigurationProviderImpl"/>
<!-- key jest wymagany przez mechanizm modułów wtyczek. Nie ma związku z działaniem tej funkcjonalności -->
Atrybuty:
- template-provider (opcjonalny) - nazwa klasy implementującej interfejs ConfigurationFileTemplateProvider. Pozwala to na załadowanie szablonu pliku konfiguracyjnego w widoku edycji konfiguracji wtyczek. Wtyczka przez interfejs podaje własny szablon.
- change-listener (opcjonalny) - nazwa klasy implementującej interfejs ConfigurationFileChangeListener. Umożliwia obsługę reagowania na zdarzenie, gdy plik konfiguracyjny zostanie zmieniony (np. w celu cache'owania konfiguracji).
- allow-file-management (opcjonalny) - wartośc true/false (domyślnie true). Flaga określająca, czy użytkownik może zarządzać plikami konfiguracyjnymi wtyczki (dodawanie, usuwanie, modyfikacjia identyfikatorów/typów plików).
- graphic-schema-provider (opcjonalny) - nazwa klasy implementującej ConfigurationFileGraphicSchemaProvider. Pozwala na załadowanie konfiguracji schematu graficznego dzięki czemu będzie dostępna konfiguracja wtyczki w trybie graficznym.
- init-configuration (opcjonalny) - nazwa klasy implementującej InitConfigurationProvider. Pozwala na załadowanie gotowych plików konfiguracyjnych podczas instalacji wtyczki.
Tryb graficzny konfiguracji wtyczek
Po dodaniu wpisu graphic-schema-provider w deskryptorze wtyczki (dla której chcemy wyświetlić graficzną konfigurację) i prawidłowym napisaniu schematu do konfiguracji wtyczki pojawi się konfiguracja w trybie graficznym.
UWaga
Wtyczka w pomie powinna mieć zależność do plugin-configuration-manager w wersji minimum 4.0.0
Plik ze schematem powinien być w formacie js i musi posiadać skrypt przypisujący do window.vfgFileSchema konfigurację schematu graficznego
Dokumentacja do pisania schematu graficznego: https://vue-generators.gitbook.io
Przykładowy plik konfiguracyjny schematu graficznego do wtyczki Warermark:
Konfiguracja schematu graficznego przystosowana jest pod ten plik konfiguracyjny wtyczki Watermark w formacie JSON:
Tłumaczenia
Tłumaczenia działają na elementach o type:
- label
- legend
- name
- hint
- help
Jako wartość należy podać klucz tłumaczenia z pliku messages_browser wtyczki.
schema: {
fields: [{
type: "field-array",
label: "tree.view.table1",
model: "table1",
}]
}
Konfiguracja schematu graficznego dla tablic
Poniżej przykłady:
1) Tablica
{
"table1":
[
"EUR",
"USD",
"AUD"
]
}
schema: {
fields: [{
type: "field-array",
label: "Waluty w tablicy",
model: "table1",
}]
}
2) Tablica tablic
{
"table2": [
[
"EUR"
],
[
"USD"
],
[
"AUD"
]
]
}
schema: {
fields: [{
type: "field-array",
label: "Waluty w tablicy",
model: "table2",
}]
}
3) Tablica obiektów
{
"table3": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
}
schema: {
fields: [{
type: "field-array",
label: "Tablica obiektów",
model: "table3",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "input",
inputType: "text",
label: "Rodzaj wydatku",
model: "wydatek"
}
]
}
}]
}
4) Tablica tablic z obiektami
{
"table4": [
[
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
}
],
[
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
]
}
schema: {
fields: [{
type: "field-array",
label: "Tablica tablic z obiektami",
model: "table4",
maxHeight: "200",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "input",
inputType: "text",
label: "Rodzaj wydatku",
model: "wydatek"
}
]
}
}]
}
5) Tablica obiektów posiadających dane i tablicę obiektów
{
"table5": [
{
"id": 1,
"table5_1": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
},
{
"id": 2,
"table5_1": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
}
]
}
schema: {
fields: [{
type: "field-array",
label: "Tablica obiektów posiadających dane i tablicę obiektów ",
model: "table5",
maxHeight: "200",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "field-array",
label: "table5_1",
model: "table5_1",
maxHeight: "200",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "input",
inputType: "text",
label: "Rodzaj wydatku",
model: "wydatek"
}
]
}
}
]
}
}]
}
6) Poperty posiadający tablicę obiektów posiadających dane i tablicę obiektów
{
"table6": {
"table6_1": [
{
"id": 1,
"table6_2": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
},
{
"id": 2,
"table6_2": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
}
]
}
}
schema: {
fields: [{
type: "field-array",
label: "Popertis posiadający tablicę obiektów posiadających dane i tablicę obiektów ",
model: "table6.table6_1",
schema: {
fields: [
{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "field-array",
label: "table6_2",
model: "table6_2",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "input",
inputType: "text",
label: "Rodzaj wydatku",
model: "wydatek"
}
]
}
}
]
}
}]
}


