0.7.1 • Published 2 years ago

carbis-config-component v0.7.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Instructions

Модуль для отображения и работы с конфигурацией, взаимодействующий с Parametrica

<Config
  :metaConfig="metaConfig"
  v-model="localConfig"
  :isDev="false"
  :exclude="[]"
  :loading="loading"
  @validate="(v) => showValidate(v)">
</Config>

Installation

npm i carbis-config-component
import { CarbisConfig } from "carbis-config-component";

Table of contents

Props

metaConfig          - Объект метаданных конфигурации
value               - Объект данных конфигурации
isDev               - Режим разработчика
exclude             - Список полей, которые не должны отображаться
loading             - Состояние загрузки
defaultOpened       - Список ключей для раскрытия панели по дефолту

Events

validate           - Событие, происходящее при изменении поля
update             - Событие, которое возвращает объект, содержащий исключительно изменённые поля

Slots

Данный модуль позволяет переопределить компонент любого поля, для удобства необходимо перейти в режим разработчика isDev="true"

[FieldSet]-slot                 - Переопределение компонента FieldSet 
[FieldSet-Field]-slot           - Переопределние поля в FieldSet
[FieldSet.FieldSet-Field]-slot  - Переопределение поля во вложенном FieldSet
[FieldSet]-action-slot          - Переопределение действия в компоненте FieldSet
[FieldSet]-footer-slot          - Переопределение подвала компонента в FieldSet
[FieldSet]-header-slot          - Переопределение верхней части компонента в FieldSet
[Field]-slot                    - Переопределение примтивного поля на верхнем уровне
action-slot                     - Переопределение действия основного компонента настроек

При переиспользовании слотов, которые привязаны к Field или FieldSet , вы можете получить аттрибуты

{
  item: [Object, String, Number, Boolean],
  currentKey: String,
  meta: Object,
  relativeKey: String,
  currentKey: String,
  setattr: function (newValue) 
}

Example

Примеры использования

from .ext.parametrica import Field, Fieldset, Parametrica, InRange, io

#Let`s define a Server fieldset
class Server(Fieldset):
    host = Field[str](default='0.0.0.0').label('Server address')
    port = Field[int](default=0).label('Server port').rule(InRange(0, 65535))

#Inheritance is also supported
class AuthServer(Server):
    user = Field[str]('admin').label('Username')
    password = Field[str]('P@55\/\/0rd').label('Password').password()

#Finally, define a configuration root
class Config(Parametrica):
    api_server = Field[AuthServer](host="any.api.com", port="443").label('API Server')
    local_server = Field[Server](port=8080).label('Local server')

    #of course, you can define any field in the config root
    deferred_startup = Field[bool](False).label('Start server after 10 secs')

config = Config(io.YAMLFileConfigIO('config.yaml'))

Далее мы можем получить метаданные конфигурации , вызвав метод __metadata__() - данные отсюда передаём в metaConfig Для получения данных конфигурации используем метод export() - данные отсюда передаём в v-model

<Config
  :metaConfig="metaConfig"
  v-model="localConfig"
  :exclude="[]"
  :loading="loading"
  @validate="(v) => showValidate(v)"
>
  <template #api_server-action-slot>
    <v-btn color="primary">Проверить соединение</v-btn>
  </template>
  <template v-slot:action-slot>
    <v-spacer></v-spacer>
    <v-btn @click="updateConfig(localConfig)" class="primary"
      >Сохранить</v-btn
    >
  </template>
</Config>

В данном примере мы переопределяем action-slot у основного компонента и у FieldSet'а AuthServer Для удобства разработки необходимо переключить компонент в режим разработки, передав параметр isDev="true", что даёт возможность увидеть слоты, которые можно переиспользовать Если нам необходимо скрыть поле, например deferred_startup мы передаём в поле :exclude="'deferred_startup'"

0.7.1

2 years ago

0.7.0

2 years ago

0.6.0

2 years ago

0.5.0

2 years ago

0.4.0

2 years ago

0.3.0

2 years ago

0.2.0

2 years ago

0.1.0

2 years ago

0.0.1

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago