瀏覽代碼

added support for aliasMap for p5:alias field type

Piotr Labudda 8 年之前
父節點
當前提交
0386aadaa9
共有 1 個文件被更改,包括 18 次插入7 次删除
  1. 18 7
      SE/se-lib/TableAjax.php

+ 18 - 7
SE/se-lib/TableAjax.php

@@ -979,13 +979,24 @@ class TableAjax extends ViewAjax {
 					break;
 				case "special":
 					fieldWidget = (function(fldName, fieldProps) {
-						var _fieldName = fldName,
-								_fieldProps = fieldProps,
-								_format = _.get(_fieldProps, 'format', '{0}');
+						var _fieldName = fldName;
+						var _fieldProps = fieldProps;
+						var _format = _.get(_fieldProps, 'format', '{0}');
+						var _aliasMap = _.get(_fieldProps, 'aliasMap', null);
 						// console.log('FieldWidget: generate function to render field('+_fieldName+') ', fieldProps);
 						return function(val, fieldPK, row) {
-							// console.log('FieldWidget: pk('+fieldPK+') run function to render field('+_fieldName+') with value('+val+') ', fieldProps);
-							return p5Utils__format(_format, [val]);
+							// console.log('FieldWidget: pk('+fieldPK+') run function to render field('+_fieldName+') with value('+val+') ', fieldProps, 'row', row);
+							var format = _format;
+							if (_aliasMap) {
+								Object.keys(_aliasMap).map(function (mapKey) {
+									var mapField = _aliasMap[mapKey]
+									if (undefined !== row[mapField]) {
+										format = format.replace(new RegExp('\{' + mapKey + '\}', 'g'), row[mapField]);
+									}
+									// console.log('FieldWidget: pk('+fieldPK+') run function to render field('+_fieldName+') with value('+val+') _aliasMap:', _aliasMap, 'row['+mapField+']', row[mapField], 'converted val:', val);
+								})
+							}
+							return p5Utils__format(format, [val]);
 						}
 					}(fldName, fieldProps));
 					break;
@@ -5655,8 +5666,8 @@ jQuery(document).ready(function(){
 						switch ($typeName) {
 							case 'enum': $columnConfig->type = 'string'; break;
 							case 'alias': {
-								$format = $acl->getXsdFieldParam($col, 'format');
-								if ($format) $columnConfig->format = $format;
+								if ($format = $acl->getXsdFieldParam($col, 'format')) $columnConfig->format = $format;
+								if ($aliasMap = $acl->getXsdFieldParam($col, 'aliasMap')) $columnConfig->aliasMap = $aliasMap;
 							} break;
 							case 'string': {
 								$columnConfig->type = 'p5:string';