sugoi internally added
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
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<T> extends FormElement<Int>
|
||||
{
|
||||
public var data:Array<String>;
|
||||
public var selectMessage:String;
|
||||
public var labelLeft:Bool;
|
||||
public var verticle:Bool;
|
||||
public var labelRight:Bool;
|
||||
var checked : Array<Bool>;
|
||||
|
||||
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<String>, 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<FakeFlag>();
|
||||
//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 = "<table><tr>";
|
||||
for (i in 0...columns)
|
||||
{
|
||||
s += "<td valign=\"top\">\n";
|
||||
s += "<table>\n";
|
||||
|
||||
for (j in 0...rowsPerColumn)
|
||||
{
|
||||
if (c >= array.length) break;
|
||||
|
||||
s += "<tr>";
|
||||
|
||||
var row:Dynamic = array[c];
|
||||
|
||||
var checkbox = "<input type=\"checkbox\" class=\"" + tagCss + "\" name=\""+n+"[]\" id=\""+n+c+"\" value=\""+c+"\" " + (checked[c]? "checked":"") +" ></input>\n";
|
||||
var label;
|
||||
|
||||
var t = Form.translator;
|
||||
|
||||
label = "<label for=\"" + n + c + "\" class=\""+''/*labelCss*/+"\" > " + t._(row) +"</label>\n";
|
||||
|
||||
|
||||
if (labelRight)
|
||||
{
|
||||
s += "<td style='vertical-align:middle;'>" + checkbox + "</td>\n";
|
||||
s += "<td style='vertical-align:middle;'>" + label + "</td>\n";
|
||||
} else {
|
||||
s += "<td style='vertical-align:middle;'>" + label + "</td>\n";
|
||||
s += "<td style='vertical-align:middle;'>" + checkbox + "</td>\n";
|
||||
}
|
||||
s += "</tr>";
|
||||
|
||||
c++;
|
||||
}
|
||||
s += "</table>";
|
||||
s += "</td>";
|
||||
}
|
||||
s += "</tr></table>\n";
|
||||
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user