Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
adds a basic working add field wizard that lets folks map fields in o…
…ne easy dialog #383
  • Loading branch information
jstrachan committed Jul 10, 2013
1 parent a3096f1 commit 3e8c72f
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 41 deletions.
37 changes: 18 additions & 19 deletions hawtio-web/src/main/webapp/app/dozer/js/helpers.ts
Expand Up @@ -121,29 +121,28 @@ module Dozer {
/*
mappingFolder.tooltip = nodeSettings["tooltip"] || nodeSettings["description"] || id;
*/
addMappingFields(mappingFolder, mapping);
angular.forEach(mapping.fields, (field) => {
addMappingFieldFolder(field, mappingFolder);
});
return mappingFolder;
}

function addMappingFields(folder: Folder, mapping: Mapping) {

angular.forEach(mapping.fields, (field) => {
var name = field.name();
var fieldFolder = new Folder(name);
fieldFolder.addClass = "net-sourceforge-dozer-field";
fieldFolder.typeName = "field";
fieldFolder.domain = Dozer.jmxDomain;
fieldFolder.key = folder.key + "_" + Core.toSafeDomID(name);
fieldFolder.parent = folder;
fieldFolder.entity = field;
fieldFolder.icon = url("/app/dozer/img/attribute.gif");

/*
fieldFolder.tooltip = nodeSettings["tooltip"] || nodeSettings["description"] || id;
*/
export function addMappingFieldFolder(field, mappingFolder) {
var name = field.name();
var fieldFolder = new Folder(name);
fieldFolder.addClass = "net-sourceforge-dozer-field";
fieldFolder.typeName = "field";
fieldFolder.domain = Dozer.jmxDomain;
fieldFolder.key = mappingFolder.key + "_" + Core.toSafeDomID(name);
fieldFolder.parent = mappingFolder;
fieldFolder.entity = field;
fieldFolder.icon = url("/app/dozer/img/attribute.gif");
/*
fieldFolder.tooltip = nodeSettings["tooltip"] || nodeSettings["description"] || id;
*/

folder.children.push(fieldFolder);
});
mappingFolder.children.push(fieldFolder);
return fieldFolder;
}

function createMapping(element) {
Expand Down
9 changes: 8 additions & 1 deletion hawtio-web/src/main/webapp/app/wiki/html/dozerMappings.html
Expand Up @@ -83,6 +83,7 @@
<th>From</th>
<th></th>
<th>To</th>
<th>Exclude</th>
</tr>
<tr ng-repeat="unmapped in unmappedFields">
<td>
Expand All @@ -94,12 +95,18 @@
</td>
<td>-></td>
<td>
<input type="text" ng-model="unmapped.toField" ng-change="onUnmappedFieldChange(unmapped)"
title="The field to map to"/>
</td>
<td>
<input type="checkbox" ng-model="unmapped.exclude" ng-click="onUnmappedFieldChange(unmapped)"
title="Whether or not the field should be excluded"/>
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<input id="submit" class="btn btn-primary add" type="submit" ng-disabled="false"
<input id="submit" class="btn btn-primary add" type="submit" ng-disabled="!unmappedFieldsHasValid"
value="Add">
<button class="btn btn-warning cancel" type="button" ng-click="addDialog.close()">Cancel</button>
</div>
Expand Down
73 changes: 52 additions & 21 deletions hawtio-web/src/main/webapp/app/wiki/js/dozerMappings.ts
Expand Up @@ -7,6 +7,7 @@ module Wiki {
$scope.propertiesDialog = new Core.Dialog();
$scope.deleteDialog = false;
$scope.unmappedFieldsAllEnabled = false;
$scope.unmappedFieldsHasValid = false;

$scope.selectedItems = [];
$scope.mappings = [];
Expand Down Expand Up @@ -68,26 +69,60 @@ module Wiki {
});


$scope.addMapping = () => {
var treeNode = $scope.rootTreeNode;
if (treeNode) {
var parentFolder = treeNode.data;
var mapping = new Dozer.Mapping();
var addedNode = Dozer.createMappingFolder(mapping, parentFolder);
var added = treeNode.addChild(addedNode);
if (added) {
added.expand(true);
added.select(true);
added.activate(true);
}
}
};

$scope.addField = () => {
if ($scope.selectedMapping) {
// lets find all the possible unmapped fields we can map from...
Dozer.findUnmappedFields(workspace, $scope.selectedMapping, (data) => {
console.log("has unmapped data fields: " + data);
$scope.unmappedFields = data;
$scope.unmappedFieldsAllEnabled = false;
$scope.unmappedFieldsHasValid = false;
$scope.addDialog.open();
Core.$apply($scope);
});
}
};

$scope.addAndCloseDialog = () => {
/*
var nodeModel = $scope.selectedNodeModel();
if (nodeModel) {
addNewNode(nodeModel);
}
*/
console.log("About to add the unmapped fields " + JSON.stringify($scope.unmappedFields, null, " "));
if ($scope.selectedMapping) {
// TODO whats the folder???
angular.forEach($scope.unmappedFields, (unmappedField) => {
if (unmappedField.valid) {
// TODO detect exclude!
var field = new Dozer.Field(new Dozer.FieldDefinition(unmappedField.name), new Dozer.FieldDefinition(unmappedField.toField));
$scope.selectedMapping.fields.push(field);
var treeNode = $scope.selectedMappingTreeNode;
var mappingFolder = $scope.selectedMappingFolder;
if (treeNode && mappingFolder) {
var fieldFolder = Dozer.addMappingFieldFolder(field, mappingFolder);
var added = treeNode.addChild(fieldFolder);
if (added) {
added.expand(true);
added.select(true);
added.activate(true);
}
} else {
console.log("No treenode and folder for mapping node! treeNode " + treeNode + " mappingFolder " + mappingFolder);
}
}
});
}
$scope.addDialog.close();
};

Expand Down Expand Up @@ -136,21 +171,6 @@ module Wiki {
// TODO show dialog if folks are about to lose changes...
};

$scope.addMapping = () => {
var treeNode = $scope.rootTreeNode;
if (treeNode) {
var parentFolder = treeNode.data;
var mapping = new Dozer.Mapping();
var addedNode = Dozer.createMappingFolder(mapping, parentFolder);
var added = treeNode.addChild(addedNode);
if (added) {
added.expand(true);
added.select(true);
added.activate(true);
}
}
};

$scope.onRootTreeNode = (rootTreeNode) => {
$scope.rootTreeNode = rootTreeNode;
};
Expand All @@ -162,6 +182,8 @@ module Wiki {
$scope.dozerEntity = null;
$scope.selectedDescription = "";
$scope.selectedMapping = null;
$scope.selectedMappingTreeNode = null;
$scope.selectedMappingFolder = null;
if (folder) {
var entity = folder.entity;
$scope.dozerEntity = entity;
Expand All @@ -172,13 +194,17 @@ module Wiki {
$scope.nodeModel = io_hawt_dozer_schema_Field;
$scope.selectedDescription = "Field Mapping";
$scope.selectedMapping = Core.pathGet(folder, ["parent", "entity"]);
$scope.selectedMappingFolder = folder.parent;
$scope.selectedMappingTreeNode = treeNode.parent;
}
else if (entity instanceof Dozer.Mapping) {
//var mapping: Dozer.Mapping = entity;
$scope.propertiesTemplate = propertiesTemplate;
$scope.nodeModel = io_hawt_dozer_schema_Mapping;
$scope.selectedDescription = "Class Mapping";
$scope.selectedMapping = entity;
$scope.selectedMappingFolder = folder;
$scope.selectedMappingTreeNode = treeNode;
}
}
Core.$apply($scope);
Expand All @@ -199,6 +225,11 @@ module Wiki {
}
};

$scope.onUnmappedFieldChange = (unmappedField) => {
unmappedField.valid = unmappedField.toField ? true : false;
$scope.unmappedFieldsHasValid = $scope.unmappedFields.find(f => f.valid);
};

updateView();

function updateView() {
Expand Down

0 comments on commit 3e8c72f

Please sign in to comment.