Skip to content
Snippets Groups Projects
Commit 0765dba1 authored by Jacob Poul Richardt's avatar Jacob Poul Richardt
Browse files

TextBlock no longer reports as not filled out.

Link now has a third component to allow linked to be opened in the same window
parent 86f20d82
Branches
No related tags found
No related merge requests found
......@@ -19,7 +19,7 @@ define(["require", "exports", "knockout", "Components/Players/Audio/AudioInfo",
};
QuestionsBase.prototype.HasValidAnswer = function (answer) {
answer = answer || this.GetAnswer();
return this.HasNoneEventsProperty(answer);
return !this.Model.RequiresInput || this.HasNoneEventsProperty(answer);
};
QuestionsBase.prototype.HasNoneEventsProperty = function (answer) {
for (var key in answer)
......
......@@ -37,7 +37,7 @@ class QuestionsBase<T> implements IQuestionViewModel
{
answer = answer || this.GetAnswer();
return this.HasNoneEventsProperty(answer);
return !this.Model.RequiresInput || this.HasNoneEventsProperty(answer);
}
private HasNoneEventsProperty(answer: T):boolean
......
......@@ -2,9 +2,9 @@ define(["require", "exports", "knockout", "Managers/TextFormatter"], function (r
var TextFormat = (function () {
function TextFormat() {
var _this = this;
this.Input = knockout.observable("Lorem {{b|ipsum}} dolor sit amet, {{i|consectetur}} adipiscing elit. {{u|Quisque}} porta pulvinar erat. {{s|Suspendisse}} a tel{{sub|lus}} odi{{super|o}}. {{mark|Vivamus}} ac libero. Fusce {{tiny|ornare}} nisl in {{small|augue}} tristique, non {{large|fermentum}} metus lobortis. Quis nisi {{color|green|finibus}} ornare. Proin {{color|#ffaaff|semper}} sapien. Quisque {{style|font-variant: small-caps;border: 1px solid magenta;|fermentum}} quis risus vitae posuere. Vitae {{url|http://refrain.dk}} est egestas {{url|http://refrain.dk|blandit}}. {{image|App/Images/DTULogo.png|15|30}}Aliquam erat volutpat. Quisque fermentum quis {{n}} risus vitae posuere. Morbi{{tab}}sagittis diam in leo {{b|vestibulum {{s|dapibus}}. Cras}} rhoncus faucibus libero, id ullamcorper mi suscipit sit amet. {{right|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}}{{center|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}}{{justify|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}} Praesent blandit tincidunt pretium. Fusce ornare nisl in augue tristique, non fermentum metus lobortis. {{image|App/Images/DTULogo.png|left}} Pellentesque cursus fringilla lobortis. In blandit nisi et lacus placerat, sed blandit nunc pharetra. Lorem ipsum dolor sit amet, consectetur.");
this.Input = knockout.observable("Lorem {{b|ipsum}} dolor sit amet, {{i|consectetur}} adipiscing elit. {{u|Quisque}} porta pulvinar erat. {{s|Suspendisse}} a tel{{sub|lus}} odi{{super|o}}. {{mark|Vivamus}} ac libero. Fusce {{tiny|ornare}} nisl in {{small|augue}} tristique, non {{large|fermentum}} metus lobortis. Quis nisi {{color|green|finibus}} ornare. Proin {{color|#ffaaff|semper}} sapien. Quisque {{style|font-variant: small-caps;border: 1px solid magenta;|fermentum}} quis risus vitae posuere. Vitae {{link|http://refrain.dk}} est egestas {{link|http://refrain.dk|blandit|current}}. {{image|App/Images/DTULogo.png|15|30}}Aliquam erat volutpat. Quisque fermentum quis {{n}} risus vitae posuere. Morbi{{tab}}sagittis diam in leo {{b|vestibulum {{s|dapibus}}. Cras}} rhoncus faucibus libero, id ullamcorper mi suscipit sit amet. {{right|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}}{{center|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}}{{justify|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}} Praesent blandit tincidunt pretium. Fusce ornare nisl in augue tristique, non fermentum metus lobortis. {{image|App/Images/DTULogo.png|left}} Pellentesque cursus fringilla lobortis. In blandit nisi et lacus placerat, sed blandit nunc pharetra. Lorem ipsum dolor sit amet, consectetur.");
this.Output = knockout.computed(function () { return _this.Input() ? TextFormatter.Format(_this.Input()) : ""; });
this.Examples = this.CreateExamples("{{b|Bold}}", "{{i|Italic}}", "{{u|Underlined}}", "{{s|Strikethrough}}", "Sub{{sub|script}}", "Super{{super|script}}", "{{mark|Marked}}", "{{tiny|Tiny}}", "{{small|Small}}", "{{large|Large}}", "{{color|red|Color}}", "{{style|color: green;font-variant: small-caps;|Styled}}", "{{link|http://www.google.com|Link}}", "{{image|App/Images/DTULogo.png|30|30|right}}", "New{{n}}line", "Tab{{tab}}space", "{{left|Left aligned}}", "{{right|Right aligned}}", "{{center|Center aligned}}", "{{justify|Justify aligned}}");
this.Examples = this.CreateExamples("{{b|Bold}}", "{{i|Italic}}", "{{u|Underlined}}", "{{s|Strikethrough}}", "Sub{{sub|script}}", "Super{{super|script}}", "{{mark|Marked}}", "{{tiny|Tiny}}", "{{small|Small}}", "{{large|Large}}", "{{color|red|Color}}", "{{style|color: green;font-variant: small-caps;|Styled}}", "{{link|http://www.google.com|Link|current}}", "{{image|App/Images/DTULogo.png|30|30|right}}", "New{{n}}line", "Tab{{tab}}space", "{{left|Left aligned}}", "{{right|Right aligned}}", "{{center|Center aligned}}", "{{justify|Justify aligned}}");
}
TextFormat.prototype.CreateExamples = function () {
var codes = [];
......
......@@ -3,7 +3,7 @@ import TextFormatter = require("Managers/TextFormatter");
class TextFormat
{
public Input: KnockoutObservable<string> = knockout.observable<string>("Lorem {{b|ipsum}} dolor sit amet, {{i|consectetur}} adipiscing elit. {{u|Quisque}} porta pulvinar erat. {{s|Suspendisse}} a tel{{sub|lus}} odi{{super|o}}. {{mark|Vivamus}} ac libero. Fusce {{tiny|ornare}} nisl in {{small|augue}} tristique, non {{large|fermentum}} metus lobortis. Quis nisi {{color|green|finibus}} ornare. Proin {{color|#ffaaff|semper}} sapien. Quisque {{style|font-variant: small-caps;border: 1px solid magenta;|fermentum}} quis risus vitae posuere. Vitae {{url|http://refrain.dk}} est egestas {{url|http://refrain.dk|blandit}}. {{image|App/Images/DTULogo.png|15|30}}Aliquam erat volutpat. Quisque fermentum quis {{n}} risus vitae posuere. Morbi{{tab}}sagittis diam in leo {{b|vestibulum {{s|dapibus}}. Cras}} rhoncus faucibus libero, id ullamcorper mi suscipit sit amet. {{right|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}}{{center|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}}{{justify|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}} Praesent blandit tincidunt pretium. Fusce ornare nisl in augue tristique, non fermentum metus lobortis. {{image|App/Images/DTULogo.png|left}} Pellentesque cursus fringilla lobortis. In blandit nisi et lacus placerat, sed blandit nunc pharetra. Lorem ipsum dolor sit amet, consectetur.");
public Input: KnockoutObservable<string> = knockout.observable<string>("Lorem {{b|ipsum}} dolor sit amet, {{i|consectetur}} adipiscing elit. {{u|Quisque}} porta pulvinar erat. {{s|Suspendisse}} a tel{{sub|lus}} odi{{super|o}}. {{mark|Vivamus}} ac libero. Fusce {{tiny|ornare}} nisl in {{small|augue}} tristique, non {{large|fermentum}} metus lobortis. Quis nisi {{color|green|finibus}} ornare. Proin {{color|#ffaaff|semper}} sapien. Quisque {{style|font-variant: small-caps;border: 1px solid magenta;|fermentum}} quis risus vitae posuere. Vitae {{link|http://refrain.dk}} est egestas {{link|http://refrain.dk|blandit|current}}. {{image|App/Images/DTULogo.png|15|30}}Aliquam erat volutpat. Quisque fermentum quis {{n}} risus vitae posuere. Morbi{{tab}}sagittis diam in leo {{b|vestibulum {{s|dapibus}}. Cras}} rhoncus faucibus libero, id ullamcorper mi suscipit sit amet. {{right|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}}{{center|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}}{{justify|Integer orci felis, imperdiet vitae felis ac, cursus iaculis elit.}} Praesent blandit tincidunt pretium. Fusce ornare nisl in augue tristique, non fermentum metus lobortis. {{image|App/Images/DTULogo.png|left}} Pellentesque cursus fringilla lobortis. In blandit nisi et lacus placerat, sed blandit nunc pharetra. Lorem ipsum dolor sit amet, consectetur.");
public Output: KnockoutComputed<string>;
public Examples: FormatExample[];
......@@ -13,7 +13,7 @@ class TextFormat
this.Output = knockout.computed(() => this.Input() ? TextFormatter.Format(this.Input()) : "");
this.Examples = this.CreateExamples("{{b|Bold}}", "{{i|Italic}}", "{{u|Underlined}}", "{{s|Strikethrough}}", "Sub{{sub|script}}",
"Super{{super|script}}", "{{mark|Marked}}", "{{tiny|Tiny}}", "{{small|Small}}", "{{large|Large}}", "{{color|red|Color}}",
"{{style|color: green;font-variant: small-caps;|Styled}}", "{{link|http://www.google.com|Link}}", "{{image|App/Images/DTULogo.png|30|30|right}}", "New{{n}}line", "Tab{{tab}}space",
"{{style|color: green;font-variant: small-caps;|Styled}}", "{{link|http://www.google.com|Link|current}}", "{{image|App/Images/DTULogo.png|30|30|right}}", "New{{n}}line", "Tab{{tab}}space",
"{{left|Left aligned}}", "{{right|Right aligned}}", "{{center|Center aligned}}", "{{justify|Justify aligned}}");
}
......
......@@ -16,8 +16,8 @@ define(["require", "exports"], function (require, exports) {
"large": function (i) { return ("<span class=\"Large\">" + i[0] + "</span>"); },
"color": function (i) { return ("<span style=\"color:" + i[0] + "\">" + i[1] + "</span>"); },
"style": function (i) { return ("<span style=\"" + i[0] + "\">" + i[1] + "</span>"); },
"url": function (i) { return ("<a target=\"_blank\" href=\"" + i[0] + "\">" + (i.length === 1 ? i[0] : i[1]) + "</a>"); },
"link": function (i) { return ("<a target=\"_blank\" href=\"" + i[0] + "\">" + (i.length === 1 ? i[0] : i[1]) + "</a>"); },
"url": function (i) { return _this.GetLinkFormat(i); },
"link": function (i) { return _this.GetLinkFormat(i); },
"image": function (i) { return _this.GetImageFormat(i); },
"n": function (i) { return "<br/>"; },
"tab": function (i) { return "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"; },
......@@ -46,6 +46,12 @@ define(["require", "exports"], function (require, exports) {
TextFormatter.prototype.EscapeHtml = function (input) {
return input.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
};
TextFormatter.prototype.GetLinkFormat = function (parameters) {
var url = parameters[0];
var text = parameters.length >= 2 ? parameters[1] : url;
var target = parameters.length >= 3 && parameters[2].toLocaleLowerCase() === "current" ? "_self" : "_blank";
return "<a target=\"" + target + "\" href=\"" + url + "\">" + text + "</a>";
};
TextFormatter.prototype.GetImageFormat = function (parameters) {
var width = "";
var height = "";
......
......@@ -18,8 +18,8 @@
"large": (i:string[]) => `<span class="Large">${i[0]}</span>`,
"color": (i:string[]) => `<span style="color:${i[0]}">${i[1]}</span>`,
"style": (i:string[]) => `<span style="${i[0]}">${i[1]}</span>`,
"url": (i:string[]) => `<a target="_blank" href="${i[0]}">${i.length === 1 ? i[0] : i[1]}</a>`,
"link": (i:string[]) => `<a target="_blank" href="${i[0]}">${i.length === 1 ? i[0] : i[1]}</a>`,
"url": (i:string[]) => this.GetLinkFormat(i),
"link": (i: string[]) => this.GetLinkFormat(i),
"image": (i: string[]) => this.GetImageFormat(i),
"n": (i: string[]) => "<br/>",
"tab": (i: string[]) => "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
......@@ -64,6 +64,16 @@
.replace(/'/g, "&#039;");
}
private GetLinkFormat(parameters:string[]):string
{
var url = parameters[0];
var text = parameters.length >= 2 ? parameters[1] : url;
var target = parameters.length >= 3 && parameters[2].toLocaleLowerCase() === "current" ? "_self" : "_blank";
return `<a target="${target}" href="${url}">${text}</a>`;
}
private GetImageFormat(parameters:string[]):string
{
var width = "";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment