package com.philemonworks.critter.ui;
import static org.rendersnake.HtmlAttributesFactory.dataRole;
import java.io.IOException;
import org.rendersnake.HtmlCanvas;
import org.rendersnake.Renderable;
import com.philemonworks.critter.rule.Rule;
public class RulePage implements Renderable {
@Override
//@formatter:off
public void renderOn(HtmlCanvas html) throws IOException {
Rule rule = (Rule)html.getPageContext().getObject("rule");
if (rule == null) return; // robustness
String status = rule.enabled ? "enabled" : "disabled";
status = rule.tracing ? status + ", tracing on" : status + ", tracing off";
html.h3().content(rule.id);
html.h5().content(status);
html.pre().content(UIUtils.strongify(rule.explain()),false);
html.div(dataRole("controlgroup").dataType("horizontal"))
.a(dataRole("button").dataTheme("b")
.href("javascript:changeEnablementRule('" + rule.id + "'," + !rule.enabled + ")"))
.content(rule.enabled ? "Disable" : "Enable")
.a(dataRole("button").dataTheme("b")
.href("javascript:changeTracingRule('" + rule.id + "'," + !rule.tracing + ")"))
.content(rule.tracing ? "Stop Tracing" : "Trace")
.a(dataRole("button").dataTheme("b").dataIcon("gear")
.href("/ui/rules/"+rule.id+ "/edit")) // TODO path encode
.content("Edit")
.a(dataRole("button").dataTheme("b")
.href("javascript:deleteRule('" + rule.id + "')"))
.content("Delete")
._div();
}
}