Merge branch 'feature/fieldset-label-expressions' into feature/configUI

This commit is contained in:
Kevin Giszewski
2014-01-16 13:47:19 -05:00
2 changed files with 24 additions and 7 deletions
+23 -6
View File
@@ -15,12 +15,21 @@
initArchetypeRenderModel();
//helper to get $eval the labelExpression
$scope.getFieldsetTitle = function(expression, fieldsetIndex)
{
if(!expression) return "";
return expression.replace(/\$fieldsetIndex/g, fieldsetIndex);
}
$scope.getFieldsetTitle = function(fieldsetConfigModel, fieldsetIndex) {
var fieldset = $scope.archetypeRenderModel.fieldsets[fieldsetIndex];
var template = fieldsetConfigModel.labelExpression;
var rgx = /{{(.*?)}}*/g;
var results;
var parsedTemplate = template;
while ((results = rgx.exec(template)) !== null) {
var propertyAlias = results[1];
var propertyValue = $scope.getPropertyValueByAlias(fieldset, propertyAlias);
parsedTemplate = parsedTemplate.replace(results[0], propertyValue);
}
return parsedTemplate;
};
/* add/remove/sort */
@@ -111,6 +120,14 @@
return fieldset.alias == alias;
});
}
//helper to get a property by alias from a fieldset
$scope.getPropertyValueByAlias = function(fieldset, propertyAlias) {
var property = _.find(fieldset.properties, function(p) {
return p.alias == propertyAlias;
});
return (typeof property !== 'undefined') ? property.value : '';
};
//helper for collapsing
$scope.focusFieldset = function(fieldset){
+1 -1
View File
@@ -13,7 +13,7 @@
<fieldset ng-class="{archetypeFieldsetError: !fieldset.isValid}" ng-init="fieldsetConfigModel = getConfigFieldsetByAlias(fieldset.alias)">
<label ng-hide="model.config.hideFieldsetLabels == '1'" ng-click="focusFieldset(fieldset)">
<img ng-src='{{fieldsetConfigModel.icon}}' title="{{fieldsetConfigModel.tooltip}}"/>
<span ng-bind="$parent.$eval(getFieldsetTitle(fieldsetConfigModel.labelExpression, $index))"></span>
<span ng-bind="getFieldsetTitle(fieldsetConfigModel, $index)"></span>
</label>
<div class="archetypeEditorControls" ng-hide="model.config.hideFieldsetControls || model.config.maxFieldsets == '1'">
<i class="icon icon-add" ng-click="addRow(fieldset.alias, $index)" ng-show="canAdd()"></i>