Създаване на компонент за UI Builder
Компонентът на UI Builder е един HTML файл с до четири части. Скелетът, който редакторът предлага за нов компонент (public/template.txt), е часовник:
<style>
.CLASS { font-size: 14px; }
</style>
<script>
exports.id = '';
exports.name = 'Clock';
exports.group = 'Controls';
exports.author = 'Total.js';
exports.icon = 'ti ti-clock';
exports.config = { bold: false, flash: true, seconds: true };
exports.version = '1';
exports.follow = true;
exports.make = function(instance, config, element, cls, iseditor) {
// build the component inside element
};
</script>
<readme>
The component renders the current time and the model contains a `Date` object.
</readme>
<settings>
<div class="padding">
<ui-component name="input" path="?.bold" config="type:checkbox">Apply bold font</ui-component>
</div>
</settings>| Част | Какво прави |
|---|---|
<style> | CSS на компонента; CLASS се заменя с клас, който принадлежи на компонента |
<script> | експортира метаданните (id, name, group, author, icon, version, config със стойностите по подразбиране) и функцията make |
<readme> | помощният текст, показван в редактора (Markdown) |
<settings> | формата, която редактира config: входове на jComponent, чийто path започва с ?., следван от ключа на конфигурацията |
Функцията make
make(instance, config, element, cls, iseditor) се изпълнява, когато компонентът се създаде:
instanceе инстанцията на компонента (set,on,emit,state...).configе неговата конфигурация, аelementе jQuery елементът, който трябва да се попълни.clsе класът, който замениCLASS, аiseditorпоказва дали се рисува в редактора или в визуализиран дизайн (така например таймерът не е нужно да работи, докато проектирате).
Вътре слушате събития (instance.on('configure', ...), когато настройките се променят, и instance.on('destroy', ...) за почистване на таймери) и записвате стойността с instance.set('value', date).
Метаданни, флагове, методи и събития
От README на редактора:
- Метаданни:
exports.follow = trueпоказва компонента във формата за настройки Path for reading/writing (само за проектанта), аexports.hidden = trueго скрива от списъка с компоненти. - Флагове на инстанция:
instance.state.bind = trueсвързва автоматично компонента във форма, за тези, които четат и записват данни;instance.state.notify = trueизлъчва само събитиетоnotify, когато стойността се промени, вместо директно да задава стойността на компонента (примерът е компонентът Counter). - Метод:
instance.datasource(CLID_OR_@INSTANCEID__OR__#VIEWID, function(value) {})чете източник на данни и връща масив от[id, name]. - Събитие:
instance.on('refresh', function(meta) {})се задейства, когато някои обекти са се променили:meta.typeеremoveилиconfigure, сmeta.itemsилиmeta.item. - Свойства на редактора, които компонент може да чете:
DEF.cl.datasource(списъци с кодове и компоненти сfollow),DEF.cl.paths,DEF.cl.list(всички инстанции),DEF.cl.inputs,DEF.cl.outputs,DEF.cl.viewsиDEF.cl.apps(родствени дизайни). - Следване:
config.path, който започва с@, означава, че компонентът следва друг.
Публикувайте файла в собствен списък с компоненти (стартиране на редактора) и екипът ви може да го ползва от редактора.