mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2024-11-29 12:14:34 -06:00
212 lines
14 KiB
Twig
212 lines
14 KiB
Twig
{% extends './layout/default' %}
|
|
{% block breadcrumbs %}
|
|
{{ Breadcrumbs.render(Route.getCurrentRoute.getName) }}
|
|
{% endblock %}
|
|
{% block content %}
|
|
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
|
<p>
|
|
<a href="{{ route('rule-groups.create') }}" id="new_rule_group" class="btn btn-success">{{ 'new_rule_group'|_ }}</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
{% if ruleGroups|length == 1 and ruleGroups[0].rules.count() == 0 %}
|
|
{% include 'partials.empty' with {objectType: 'default', type: 'rules',route: route('rules.create')} %}
|
|
{# make FF ignore demo for now. #}
|
|
{% set shownDemo = true %}
|
|
{% endif %}
|
|
|
|
{% for ruleGroup in ruleGroups %}
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
|
<div class="box rules-box" data-group="{{ ruleGroup.id }}">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">
|
|
{% if ruleGroup.active %}
|
|
{{ ruleGroup.title }}
|
|
{% else %}
|
|
<s>{{ ruleGroup.title }}</s> ({{ 'inactive'|_|lower }})
|
|
{% endif %}
|
|
</h3>
|
|
|
|
|
|
<div class="box-tools pull-right">
|
|
<div class="btn-group">
|
|
<button type="button" class="btn btn-box-tool" data-widget="collapse"><span class="fa fa-minus"></span>
|
|
</button>
|
|
<button class="btn btn-box-tool dropdown-toggle" data-toggle="dropdown"><span
|
|
class="fa fa-ellipsis-v"></span></button>
|
|
<ul class="dropdown-menu" role="menu">
|
|
<li><a href="{{ route('rule-groups.edit',ruleGroup.id) }}"><span class="fa fa-fw fa-pencil"></span> {{ 'edit'|_ }}</a></li>
|
|
<li><a href="{{ route('rule-groups.delete',ruleGroup.id) }}"><span class="fa fa-fw fa-trash"></span> {{ 'delete'|_ }}</a></li>
|
|
<li><a href="{{ route('rule-groups.select-transactions',ruleGroup.id) }}"><span
|
|
class="fa fa-fw fa-power-off"></span> {{ trans('firefly.apply_rule_group_selection', {title: ruleGroup.title}) }}
|
|
</a></li>
|
|
{% if ruleGroup.order > 1 %}
|
|
<li><a href="#" class="move-group" data-direction="up" data-id="{{ ruleGroup.id }}"><span
|
|
class="fa fa-fw fa-arrow-up"></span> {{ 'move_rule_group_up'|_ }}</a></li>
|
|
{% endif %}
|
|
{% if ruleGroup.order < ruleGroups|length %}
|
|
<li><a href="#" class="move-group" data-direction="down" data-id="{{ ruleGroup.id }}"><span
|
|
class="fa fa-fw fa-arrow-down"></span> {{ 'move_rule_group_down'|_ }}
|
|
</a></li>
|
|
{% endif %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="box-body">
|
|
<p>
|
|
<em>{{ ruleGroup.description }}</em>
|
|
</p>
|
|
|
|
{% if ruleGroup.rules.count() > 0 %}
|
|
<table class="table table-hover table-striped group-rules">
|
|
<thead>
|
|
<tr>
|
|
<th style="width:5%;"> </th>
|
|
<th style="width:10%;"> </th>
|
|
<th style="width:10%;"> </th>
|
|
<th style="width:25%;">{{ 'rule_name'|_ }}</th>
|
|
<th style="width:25%;" class="hidden-xs">{{ 'rule_triggers'|_ }}</th>
|
|
<th style="width:25%;" class="hidden-xs">{{ 'rule_actions'|_ }}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="rule-connected-list">
|
|
{% for rule in ruleGroup.rules %}
|
|
<tr class="single-rule" data-order="{{ rule.order }}" data-id="{{ rule.id }}" data-group-id="{{ ruleGroup.id }}" data-position="{{ loop.index0 }}">
|
|
<td>
|
|
<div class="btn-group btn-group-xs prio_buttons">
|
|
<span class="fa fa-fw fa-bars rule-handle"></span>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="btn-group btn-group-xs edit_buttons">
|
|
<a title="{{ 'edit'|_ }}" href="{{ route('rules.edit', rule.id) }}"
|
|
class="btn btn-default"><span
|
|
class="fa fa-fw fa-pencil"></span></a>
|
|
<a title="{{ 'delete'|_ }}"
|
|
href="{{ route('rules.delete', rule.id) }}"
|
|
class="btn btn-danger"><span
|
|
class="fa fa-fw fa-trash"></span></a>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="btn-group btn-group-xs test_buttons">
|
|
{% if rule.active %}
|
|
{# show which transactions would match #}
|
|
<a href="{{ route('rules.search',rule.id) }}" class="btn btn-default {% if false == rule.strict %}test_rule_triggers{% endif %}" data-id="{{ rule.id }}" title="{{ 'test_rule_triggers'|_ }}"><span data-id="{{ rule.id }}" class="fa fa-fw fa-flask"></span></a>
|
|
|
|
{# actually execute rule #}
|
|
<a href="{{ route('rules.select-transactions',rule.id) }}" class="btn btn-default" title=" {{ trans('firefly.apply_rule_selection', {title: rule.title}) }}"><span class="fa fa-fw fa-power-off "></span></a>
|
|
{% endif %}
|
|
|
|
{# duplicate rule #}
|
|
<a href="#" class="btn btn-default duplicate-rule" data-id="{{ rule.id }}" title=" {{ trans('firefly.duplicate_rule', {title: rule.title}) }}"><span class="fa fa-fw fa-copy"></span></a>
|
|
</div>
|
|
</td>
|
|
<td class="markdown">
|
|
{% if rule.active %}
|
|
{{ rule.title }}
|
|
{% else %}
|
|
<s>{{ rule.title }}</s> ({{ 'inactive'|_|lower }})
|
|
{% endif %}
|
|
{% if rule.stop_processing %}
|
|
<span class="fa fa-stop-circle-o"></span>
|
|
{% endif %}
|
|
|
|
{% if rule.description != "" %}
|
|
<small class="hidden-xs"
|
|
{% if not rule.active %}
|
|
class="text-muted"
|
|
{% endif %}
|
|
><br/>{{ rule.description|default('')|markdown }}</small>
|
|
{% endif %}
|
|
<small>({% if rule.strict %}<span class="text-danger">{{ 'rule_is_strict'|_ }}</span>{% else %}<span class="text-success">{{ 'rule_is_not_strict'|_ }}</span>{% endif %})</small>
|
|
</td>
|
|
<td class="hidden-xs">
|
|
{% if rule.ruleTriggers.count() > 0 %}
|
|
<ul class="small rule-trigger-list" data-count="{{ rule.ruleTriggers.count() }}" data-id="{{ rule.id }}">
|
|
{% for trigger in rule.ruleTriggers %}
|
|
{% if trigger.trigger_type != "user_action" %}
|
|
<li
|
|
{% if not rule.active %}
|
|
class="text-muted"
|
|
{% endif %}
|
|
data-id="{{ trigger.id }}">
|
|
{{ trans(('firefly.rule_trigger_' ~ getRootSearchOperator(trigger.trigger_type)), {trigger_value: trigger.trigger_value}) }}
|
|
|
|
{% if trigger.stop_processing %}
|
|
<span class="fa fa-stop-circle-o"></span>
|
|
{% endif %}
|
|
</li>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</ul>
|
|
<ul class="small rule-triggers-show" style="cursor:pointer;display:none;" data-id="{{ rule.id }}">
|
|
<li data-id="{{ rule.id }}">{{ 'show_triggers'|_ }}</li>
|
|
</ul>
|
|
{% endif %}
|
|
</td>
|
|
<td class="hidden-xs">
|
|
{% if rule.ruleActions.count() > 0 %}
|
|
<ul class="small rule-action-list" data-count="{{ rule.ruleActions.count() }}" data-id="{{ rule.id }}">
|
|
{% for action in rule.ruleActions %}
|
|
<li
|
|
{% if not rule.active %}
|
|
class="text-muted"
|
|
{% endif %}
|
|
data-id="{{ action.id }}">{{ trans(('firefly.rule_action_' ~ action.action_type), {action_value: action.action_value}) }}
|
|
{% if action.stop_processing %}
|
|
<span class="fa fa-stop-circle-o"></span>
|
|
{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
<ul class="small rule-actions-show" style="cursor:pointer;display:none;" data-id="{{ rule.id }}">
|
|
<li>{{ 'show_actions'|_ }}</li>
|
|
</ul>
|
|
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% else %}
|
|
<p>
|
|
<em>{{ 'no_rules_in_group'|_ }}</em>
|
|
</p>
|
|
{% endif %}
|
|
<p>
|
|
<br/>
|
|
<a href="{{ route('rules.create', ruleGroup.id) }}"
|
|
class="btn btn-success new_rule">{{ 'new_rule'|_ }}</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
|
|
{% include 'rules.partials.test-trigger-modal' %}
|
|
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
|
<a href="{{ route('rule-groups.create') }}" class="btn btn-success">{{ 'new_rule_group'|_ }}</a>
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %}
|
|
{% block scripts %}
|
|
<script type="text/javascript" nonce="{{ JS_NONCE }}">
|
|
var moveRuleGroupUrl = '{{ route('rule-groups.move') }}';
|
|
var duplicateRuleUrl = '{{ route('rules.duplicate') }}';
|
|
</script>
|
|
<script type="text/javascript" src="v1/js/lib/jquery-ui.min.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
|
|
<script type="text/javascript" src="v1/js/ff/rules/index.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
|
|
{% endblock %}
|