from com.inductiveautomation.ignition.common import BasicDataset
from com.inductiveautomation.ignition.common.script.builtin.DatasetUtilities import PyDataSet
from java.util import Date
def sanitize_tree(element):
    if hasattr(element, '__iter__'):
        if hasattr(element, 'keys'):
            return dict((k, sanitize_tree(element[k])) for k in element.keys())
        else:
            return list(sanitize_tree(x) for x in element)
    return element
def getColumnStruct():
	return {
	  "field": "",
	  "visible": True,
	  "editable": False,
	  "render": "auto",
	  "justify": "auto",
	  "align": "center",
	  "resizable": True,
	  "sortable": True,
	  "sort": "none",
	  "filter": {
	    "enabled": False,
	    "visible": "on-hover",
	    "string": {
	      "condition": "",
	      "value": ""
	    },
	    "number": {
	      "condition": "",
	      "value": ""
	    },
	    "boolean": {
	      "condition": ""
	    },
	    "date": {
	      "condition": "",
	      "value": ""
	    }
	  },
	  "viewPath": "",
	  "viewParams": {},
	  "boolean": "checkbox",
	  "number": "value",
	  "progressBar": {
	    "max": 100,
	    "min": 0,
	    "bar": {
	      "color": "",
	      "style": {
	        "classes": ""
	      }
	    },
	    "track": {
	      "color": "",
	      "style": {
	        "classes": ""
	      }
	    },
	    "value": {
	      "enabled": True,
	      "format": "0,0.##",
	      "justify": "center",
	      "style": {
	        "classes": ""
	      }
	    }
	  },
	  "toggleSwitch": {
	    "color": {
	      "selected": "",
	      "unselected": ""
	    }
	  },
	  "nullFormat": {
	    "includeNullStrings": False,
	    "strict": False,
	    "nullFormatValue": ""
	  },
	  "numberFormat": "0,0.##",
	  "dateFormat": "MMM-DD HH:mm",
	  "width": "",
	  "strictWidth": False,
	  "header": {
	    "title": "",
	    "justify": "left",
	    "align": "center",
	    "style": {
	      "classes": ""
	    }
	  },
	  "footer": {
	    "title": "",
	    "justify": "left",
	    "align": "center",
	    "style": {
	      "classes": ""
	    }
	  },
	  "style": {
	    "classes": ""
	  }
	}
def xformTableColumns(dataIn):
	
	if isinstance(dataIn, PyDataSet):
		data = dataIn
	elif isinstance(dataIn, BasicDataset):
		data = system.dataset.toPyDataSet(dataIn)
	elif isinstance(dataIn, dict):
		pass
	
	colHeaders = system.dataset.getColumnHeaders(data)
	columns = []
	if len(data)> 0:
		for col in colHeaders:
			struct= utils.helper.getColumnStruct()
			struct["field"] = col
			if isinstance(data[0][col], Date):				
				struct["render"] = "date"
			columns.append(struct)
	else:
		for col in colHeaders:
			struct= utils.helper.getColumnStruct()
			struct["field"] = col
			columns.append(struct)
			
	return columns