Похоже, что вместо того, чтобы связываться с «Счета: PastDueInvoices (Relation)», я связался непосредственно с «Счета-фактуры» и использовал следующую таблицу onAttach для таблицы.
var datasource = widget.datasource;
var accountName = widget.parent.datasource.item.account_name;
var totalPayments = datasource.item.Payments.reduce((b,a) => Number (a.payment_amount) + Number(b) , 0);
datasource.query.filters.Accounts.account_name._equals = accountName;
datasource.query.filters.invoice_due_date._lessThan = new Date;
datasource.query.filters.invoice_total._greaterThan = totalPayments;
datasource.load();
Я бы все еще любил слышать, есть ли лучший подход.
Благодаря
Не изучая детали реализации (или Ваши ссылки GitHub), я попробовал бы, пишут DSL как это:
(крадущий отсюда: http://supercocktails.com/1310/Long-Island-Iced-Tea-)
describe "Long Island Iced Tea" do
serve_in 'Highball Glass'
ingredients do
half.ounce.of :vodka
half.ounce.of :tequila
half.ounce.of :light_rum
half.ounce.of :gin
1.dash.of :coca_cola
#ignoring lemon peel as how can a robot peel a lemon?
end
steps do
add :vodka, :tequila, :light_rum, :gin
stir :gently
add :coca_cola
end
end
Надежда, которая помогает!
Если Вы хотите, чтобы рецепт выглядел более естественным, почему не (из того же рецепта используемый Orion Ewards, Спасибо!):
Recipe for Long Island Iced Tea #1
Ingredients:
1/2 oz Vodka
1/2 oz Tequila
1/2 oz Light Rum
1/2 oz Gin
1 Dash Coca-Cola
# ignored Twist of Lemon Peel (or Lime)
Затем добавьте Верхушку дерева к соединению. У Вас могли быть правила, такие как:
grammar Cocktail
rule cocktail
title ingredients
end
rule title
'Recipe for' S text:(.*) EOF
end
rule ingredients
ingredient+
end
rule ingredient
qty S liquid
end
# ...
end
Который компилятор верхушки дерева преобразует в хороший рубиновый модуль. Затем:
parser = CocktailParser.new
r = parser.parse(recipe)
DSL Orion выглядит очень хорошим. Единственное изменение я возможно предложил бы от Вас "обновленный" код,
description
с recipe
. Это - более описательный терминТак как набор компонентов и действий фиксируется, свяжите компоненты с переменными, а не символами, т.е. Вы имеете vodka = :vodka
определенный где-нибудь. Легче сказать
водка соединения, джин и triple_sec # вместо использования: водка: джин и: triple_sec.
так или иначе это - незначительная гнида.