package sugoi.form.elements; import sugoi.form.Form; import sugoi.form.FormElement; import sugoi.form.Formatter; #if php import php.Web; #else import neko.Web; #end enum FakeFlag { Flag1; Flag2; Flag3; Flag4; Flag5; Flag6; Flag7; Flag8; Flag9; Flag10; Flag11; Flag12; Flag13; Flag14; Flag15; Flag16; Flag17; Flag18; Flag19; Flag20; Flag21; Flag22; Flag23; Flag24; Flag25; Flag26; Flag27; Flag28; Flag29; Flag30; Flag31; Flag32; } /** * Manage flags stored in an Int , various flags are defined by an Enum */ class Flags extends FormElement { public var data:Array; public var selectMessage:String; public var labelLeft:Bool; public var verticle:Bool; public var labelRight:Bool; var checked : Array; public var columns:Int; /** * * @param name * @param label * @param data list of enums * @param value int * @param ?verticle * @param ?labelRight */ public function new(name:String, label:String, data:Array, value:Int, ?verticle:Bool=true, ?labelRight:Bool=true) { super(); this.name = name; this.label = label; this.data = data; this.value = value; this.verticle = verticle; this.labelRight = labelRight; if (value == null) value = 0; checked = []; var i = 0; for( f in data) { checked.push( value & (1 << i) != 0 ); i++; } columns = 1; } override public function populate() { var v = Web.getParamValues(parentForm.name + "_" + name); value = 0; if (v != null) { //App.log("flags populate : " + v ); var val = new haxe.EnumFlags(); //var i = 0; for (vv in v) { val.set( FakeFlag.createByIndex(Std.parseInt(vv)) ); //i++; } value = val.toInt(); } //if (form.isSubmitted()){ //value = (v != null) ? v : new Array(); //} else { //if (v != null) value = v; //} } override public function render():String { var s = ""; var n = parentForm.name + "_" +name; var tagCss = getClasses(); var labelCss = getLabelClasses(); var c = 0; var array = Lambda.array(data); if (array != null) { //trace("L" + array.length); var rowsPerColumn = Math.ceil(array.length / columns); s = ""; for (i in 0...columns) { s += ""; } s += "
\n"; s += "\n"; for (j in 0...rowsPerColumn) { if (c >= array.length) break; s += ""; var row:Dynamic = array[c]; var checkbox = "\n"; var label; var t = Form.translator; label = "\n"; if (labelRight) { s += "\n"; s += "\n"; } else { s += "\n"; s += "\n"; } s += ""; c++; } s += "
" + checkbox + "" + label + "" + label + "" + checkbox + "
"; s += "
\n"; } return s; } }