The second update of the Hyperlink Domain Object with fixed changes

This commit is contained in:
sahajp23 2017-08-03 14:34:43 -07:00
parent a5f6940d67
commit 3e2fd8967a
4 changed files with 90 additions and 74 deletions

View File

@ -56,56 +56,43 @@ define([
"required": true,
"cssClass": "l-input-lg"
},
{
"key": "showTitle",
"control": "checkbox",
"value": false
},{
{
"key": "displayFormat",
"name": "Display Format",
"control": "composite",
"items": [
{
"control": "select",
"options": [
{
"name": "Link",
"value": "link"
},
{
"value": "button",
"name": "Button"
}
],
"cssClass": "l-inline"
}
]
"control": "select",
"options": [
{
"name": "Link",
"value": "link"
},
{
"value": "button",
"name": "Button"
}
],
"cssClass": "l-inline"
},
{
"key": "openNewTab",
"name": "Tab to Open Hyperlink",
"control": "composite",
"items": [
{
"control": "select",
"options": [
{
"name": "Open in this tab",
"value": "thisTab"
},
{
"value": "newTab",
"name": "Open in a new tab"
}
],
"cssClass": "l-inline"
}
]
"control": "select",
"options": [
{
"name": "Open in this tab",
"value": "thisTab"
},
{
"value": "newTab",
"name": "Open in a new tab"
}
],
"cssClass": "l-inline"
}
],
"model": {
"displayFormat": ["link"],
"openNewTab": ["thisTab"],
"displayFormat": "link",
"openNewTab": "thisTab",
"showTitle": false
}
@ -115,8 +102,7 @@ define([
{
"key": "hyperlink",
"type": "hyperlink",
"cssClass": "icon-check",
"name": "icon",
"name": "Hyperlink Display",
"template": hyperlinkTemplate,
"editable": false
}

View File

@ -20,12 +20,13 @@
at runtime from the About dialog for additional information.
-->
<div class="s-hyperlink" ng-controller="HyperlinkController as hyperlink">
<div>
<a href="{{domainObject.getModel().url}}"
ng-attr-target="{{hyperlink.openNewTab() ? '_blank' : undefined}}"
ng-class="{
's-button': hyperlink.isButton()}">
{{domainObject.getModel().displayText}}
</a>
</div>
<div>
<a href="{{domainObject.getModel().url}}"
ng-attr-target="{{hyperlink.openNewTab() ? '_blank' : undefined}}"
ng-class="{
's-button': hyperlink.isButton()
}">
{{domainObject.getModel().displayText}}
</a>
</div>
</div>

View File

@ -37,7 +37,7 @@ define(
@returns true if the hyperlink is chosen to open in a different tab, false if the same tab
**/
HyperlinkController.prototype.openNewTab = function () {
if (this.$scope.domainObject.getModel().openNewTab[0] === "thisTab") {
if (this.$scope.domainObject.getModel().openNewTab === "thisTab") {
return false;
} else {
return true;
@ -47,7 +47,7 @@ define(
@returns true if the hyperlink is chosen to be created as a button, false if a link
**/
HyperlinkController.prototype.isButton = function () {
if (this.$scope.domainObject.getModel().displayFormat[0] === "link") {
if (this.$scope.domainObject.getModel().displayFormat === "link") {
return false;
}
return true;

View File

@ -26,34 +26,63 @@ define(
describe("The controller for hyperlinks", function () {
var domainObject,
model,
controller,
link = "http://nasa.gov";
scope;
beforeEach(function () {
scope = jasmine.createSpyObj(
"$scope",
["domainObject"]
);
domainObject = jasmine.createSpyObj(
"domainObject",
["getModel"]
);
model = jasmine.createSpyObj(
"getModel",
["link","openNewTab","displayFormat"]
);
domainObject.getModel.link = link;
domainObject.getModel.displayFormat = "button";
domainObject.getModel.openNewTab = "thisTab";
controller = new HyperlinkController();
});
it("opens a specific given link", function () {
expect(domainObject.getModel.link)
.toEqual("http://nasa.gov");
"domainObject",
["getModel"]
);
scope.domainObject = domainObject;
controller = new HyperlinkController(scope);
});
it("knows when it should open a new tab", function () {
expect(domainObject.getModel.openNewTab)
.toEqual("thisTab");
scope.domainObject.getModel.andReturn({
"displayFormat": "link",
"openNewTab": "newTab",
"showTitle": false
}
);
controller = new HyperlinkController(scope);
expect(controller.openNewTab())
.toBe(true);
});
it("knows when it is a button", function () {
expect(domainObject.getModel.displayFormat)
.toEqual("button");
scope.domainObject.getModel.andReturn({
"displayFormat": "button",
"openNewTab": "thisTab",
"showTitle": false
}
);
controller = new HyperlinkController(scope);
expect(controller.isButton())
.toEqual(true);
});
it("knows when it should open in the same tab", function () {
scope.domainObject.getModel.andReturn({
"displayFormat": "link",
"openNewTab": "thisTab",
"showTitle": false
}
);
controller = new HyperlinkController(scope);
expect(controller.openNewTab())
.toBe(false);
});
it("knows when it is a link", function () {
scope.domainObject.getModel.andReturn({
"displayFormat": "link",
"openNewTab": "thisTab",
"showTitle": false
}
);
controller = new HyperlinkController(scope);
expect(controller.openNewTab())
.toBe(false);
});
});
}