Skip to content

Commit

Permalink
allow new mappings to be added and mappings or fields deleted #383
Browse files Browse the repository at this point in the history
  • Loading branch information
jstrachan committed Jul 10, 2013
1 parent 38bff04 commit b852486
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 33 deletions.
34 changes: 18 additions & 16 deletions hawtio-web/src/main/webapp/app/dozer/js/helpers.ts
Expand Up @@ -64,27 +64,29 @@ module Dozer {
folder.key = Core.toSafeDomID(id);

angular.forEach(model.mappings, (mapping) => {
var mappingName = mapping.name();
var mappingFolder = new Folder(mappingName);
mappingFolder.addClass = "net-sourceforge-dozer-mapping";
mappingFolder.typeName = "mapping";
mappingFolder.domain = Dozer.jmxDomain;
mappingFolder.key = folder.key + "_" + Core.toSafeDomID(mappingName);
mappingFolder.parent = folder;
mappingFolder.entity = mapping;

/*
mappingFolder.tooltip = nodeSettings["tooltip"] || nodeSettings["description"] || id;
mappingFolder.icon = imageUrl;
*/

var mappingFolder = createMappingFolder(mapping, folder);
folder.children.push(mappingFolder);

addMappingFields(mappingFolder, mapping);
});
return folder;
}

export function createMappingFolder(mapping, parentFolder) {
var mappingName = mapping.name();
var mappingFolder = new Folder(mappingName);
mappingFolder.addClass = "net-sourceforge-dozer-mapping";
mappingFolder.typeName = "mapping";
mappingFolder.domain = Dozer.jmxDomain;
mappingFolder.key = (parentFolder ? parentFolder.key + "_" : "") + Core.toSafeDomID(mappingName);
mappingFolder.parent = parentFolder;
mappingFolder.entity = mapping;
/*
mappingFolder.tooltip = nodeSettings["tooltip"] || nodeSettings["description"] || id;
mappingFolder.icon = imageUrl;
*/
addMappingFields(mappingFolder, mapping);
return mappingFolder;
}

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

angular.forEach(mapping.fields, (field) => {
Expand Down
26 changes: 22 additions & 4 deletions hawtio-web/src/main/webapp/app/wiki/html/dozerMappings.html
Expand Up @@ -33,10 +33,28 @@
</div>
</div>

<!--
<div class="gridStyle" hawtio-datatable="gridOptions"></div>
<div class="gridStyle" ng-grid="gridOptions"></div>
-->
<div class="row-fluid">
<ul class="nav nav-tabs">
<li>
<a href='' title="Add a new mapping between two classes" ng-click="addMapping()" data-placement="bottom">
<i class="icon-plus"></i> Class</a></li>
<li>
<a href='' title="Add new mappings between fields in these classes" ng-click="addField()" data-placement="bottom">
<i class="icon-plus"></i> Field</a></li>
<li>
<a href='' title="Deletes the selected item" ng-disabled="!canDelete()" ng-click="deleteDialog = true" data-placement="bottom">
<i class="icon-remove"></i> Delete</a></li>
</ul>
<div hawtio-confirm-dialog="deleteDialog"
ok-button-text="Delete"
on-ok="removeNode()">
<div class="dialog-body">
<p>You are about to delete the selected {{selectedDescription}}
</p>
<p>This operation cannot be undone so please be careful.</p>
</div>
</div>
</div>

<div class="row-fluid">
<div id="tree-container" class="span4">
Expand Down
44 changes: 31 additions & 13 deletions hawtio-web/src/main/webapp/app/wiki/js/dozerMappings.ts
Expand Up @@ -5,6 +5,7 @@ module Wiki {
$scope.schema = {};
$scope.addDialog = new Core.Dialog();
$scope.propertiesDialog = new Core.Dialog();
$scope.deleteDialog = false;

$scope.selectedItems = [];
$scope.mappings = [];
Expand Down Expand Up @@ -76,20 +77,18 @@ module Wiki {
$scope.addDialog.close();
};

$scope.canDelete = () => {
return $scope.selectedFolder ? true : false;
};

$scope.removeNode = () => {
/*
var folder = getSelectedOrRouteFolder();
if (folder) {
var nodeName = Camel.getFolderCamelNodeId(folder);
folder.detach();
if ("route" === nodeName) {
// lets also clear the selected route node
$scope.selectedRouteId = null;
}
updateSelection(null);
treeModified();
}
*/
if ($scope.selectedFolder && $scope.treeNode) {
// TODO deal with deleting fields
$scope.selectedFolder.detach();
$scope.treeNode.remove();
$scope.selectedFolder = null;
$scope.treeNode = null;
}
};

$scope.save = () => {
Expand Down Expand Up @@ -117,6 +116,22 @@ 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);
}
console.log("added!");
}
};

$scope.onRootTreeNode = (rootTreeNode) => {
$scope.rootTreeNode = rootTreeNode;
};
Expand All @@ -126,6 +141,7 @@ module Wiki {
$scope.treeNode = treeNode;
$scope.propertiesTemplate = null;
$scope.dozerEntity = null;
$scope.selectedDescription = "";
if (folder) {
var entity = folder.entity;
$scope.dozerEntity = entity;
Expand All @@ -134,11 +150,13 @@ module Wiki {
//var field: Dozer.Field = entity;
$scope.propertiesTemplate = propertiesTemplate;
$scope.nodeModel = io_hawt_dozer_schema_Field;
$scope.selectedDescription = "Field Mapping";
}
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";
}
}
Core.$apply($scope);
Expand Down

0 comments on commit b852486

Please sign in to comment.