Alta

29.1.2019 20:09

Методы среды

Взятие корневого документа приложения. Тип значения метода соответствует корневой форме, заданной при создании приложения.

def root()
Организация внутренней ссылки на другую страницу приложения:
def anchor(pageid:String!, title:String!)
def anchor(pageid:String!, title:String!, #:map/M params)
Реализация поллинга: метод method вызыватся каждые ms миллисекунд:
def interval(ms:Int!, method:String!)
Получение логина пользователя (текущей сессии)
def login()

Скрытый параметр:

hidden: {
    method:'publish // метод, куда передается параметр
    name:'from // имя параметра
    value:login()} // значение параметра

Текстовый ввод:

text: {
    method:'publish // метод, куда передается параметр
    name:'message // имя параметра
    type:string} // тип вводимого значения

Элемент-селектор

selector: {
    pick:'readers // выборка опций root().readers
    name:'reader // имя параметра
    method:'issue} // метод, куда передается параметр

Кнопка с запуском метода

aButton: {
    method: 'publish // запускаемый метод
    title: 'Опубликовать} // текст кнопки

Параметры:

def param(name:String!) // значение входного параметра
def extString(key:String!): String?
def extStringe(key:String!): String!
def extStrings(key:String!): String*

def extInt(key:String!): Int?
def extInte(key:String!): Int!
def extInts(key:String!): Int*
   
def extReal(key:String!): Real?
def extReale(key:String!): Real!
def extReals(key:String!): Real*

Запуск проводки:

def jump(jumpname:String!, target:String!)

Методы страниц – выходные инструкции:

def val(selector:String!, value:Any!)
def clear(selector:String!)
def subst(id:String!, newval)
def append(id:String!, newval)

Пример метода страницы

jump: 'addmessage, 'Active // исполнение проводки addmessage
clear: 'message // очистка элемента с id 'message
subst: 'posts, feed() // замена содержимого элемента id='posts

Librun-методы

методы работы с документом в модели – на примере документа формы App с полями

  • name: String?
  • pages: Page*
  • title: String -> String

Определение

def App name: String? // взятие значения поля name
def App nameDirect(): String? // взятие прямого значения
def App name(vals: String?) // задание значения поля name

Поле pages содержит последовательность документов Page (форма Page также должна быть определена в модели)

def App pages: Page* // взятие всех значений 
def App pagesDirect(): Page*  // взятие прямых значений
def App pages(vals: Page*) // новая последовательность
def App pagesPrepend(vals: Page*) // добавление в начало
def App pagesAppend(vals: Page*) // добавление в конец

Мэп-поле title задает заголовок документа в зависимости от языка (ключа мэпа)

def App titleKeys(): String* // взятие всех ключей мэпа 
def App title(key: String!): String? // взятие значения ключа key
def App titleDirect(key: String!): String? // взятие прямого значения
def App title(key: String!, vals: String?) // задание значения ключа key

Общие методы

def App runTitle(): String! // получение заголовка документа в языке по-умолчанию
def App runTitle(lang: String!): String! // получение заголовка на языке lang
def App ikey(): Int! // получение уникального ключа документа в модели
def App name(): String? // получение имени документа
def App state(): State! // получение текущего статуса документа
def App states(): State* // получение ретро-последовательности статусов
def App get(fieldName: String!)* // получение значения поля по имени
def App delete() // удаление документа
def allApp(): `App`* // все документы формы App
def getApp(ikey: Int!): `App`? // получение документа по уникальному ключу

Методы запуска перехода (проводки) документов jumpName, переводящей документ в статус targetStateName с внешними параметрами ext:

def App call(targetStateName: String!, jumpName: String!, ext: librun/External!)
def App call(targetStateName: String!, jumpName: String!)
def App call(jumpName: String!, ext: librun/External!)
def App call(jumpName: String!)

Технические методы

def App wrap: doc/Item! // получение документа, соответствующего данному App
def App equalityKey // ключ, по которому оценивается равенство документов App
def AppType:Int! // целочисленный номер типа данных, задаваемого App (ikey формы)