mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 08:32:50 -06:00
Updated JS editor to the latest version from Moises.
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
<script type="text/javascript" src="gfjseditor.js"></script>
|
<script type="text/javascript" src="gfjseditor.js"></script>
|
||||||
<title>Web-based Syntax Editor</title>
|
<title>Web-based Syntax Editor</title>
|
||||||
</head>
|
</head>
|
||||||
<body onload="mkEditor('editor', Food)" onkeydown="hotKeys(event)">
|
<body onload="mkEditor('editor', Restaurant)" onkeydown="hotKeys(event)">
|
||||||
<div id="editor">
|
<div id="editor">
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -6,6 +6,8 @@ expColImg[0] = new Image(12,12);
|
|||||||
expColImg[0].src = "minus.png";
|
expColImg[0].src = "minus.png";
|
||||||
expColImg[1] = new Image(12,12);
|
expColImg[1] = new Image(12,12);
|
||||||
expColImg[1].src = "plus.png";
|
expColImg[1].src = "plus.png";
|
||||||
|
expColImg[2] = new Image(12,12);
|
||||||
|
expColImg[2].src = "empty.png";
|
||||||
|
|
||||||
// Grammars
|
// Grammars
|
||||||
var grammar = undefined;
|
var grammar = undefined;
|
||||||
@@ -47,7 +49,6 @@ keys ["27"] = function() { clickEsc(); };
|
|||||||
|
|
||||||
function state(selectedNode, tree, collapseBuffer) {
|
function state(selectedNode, tree, collapseBuffer) {
|
||||||
this.selectedNode = selectedNode;
|
this.selectedNode = selectedNode;
|
||||||
// this.tree = myAbstract.copyTree(tree);
|
|
||||||
this.tree = grammar.abstract.copyTree(tree);
|
this.tree = grammar.abstract.copyTree(tree);
|
||||||
this.collapseBuffer = collapseBuffer;
|
this.collapseBuffer = collapseBuffer;
|
||||||
return this;
|
return this;
|
||||||
@@ -70,6 +71,11 @@ treeNode.prototype.hasChildren = function() {
|
|||||||
return this.children.length;
|
return this.children.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* ----------------------------- GUI functions ----------------------------- */
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
// Creates an instance of the editor and stores it in the given HTML container.
|
// Creates an instance of the editor and stores it in the given HTML container.
|
||||||
// Previous content is destroyed.
|
// Previous content is destroyed.
|
||||||
function mkEditor(container, myGrammar) {
|
function mkEditor(container, myGrammar) {
|
||||||
@@ -375,13 +381,12 @@ function showLanguages() {
|
|||||||
"<td class='language' id='EditorDan' title='Label Danish' onclick='clickLanguage(\"\")'>Danish</td>",
|
"<td class='language' id='EditorDan' title='Label Danish' onclick='clickLanguage(\"\")'>Danish</td>",
|
||||||
"<td class='language' id='EditorEng' title='Label English' onclick='clickLanguage(\"EditorEng\")'>English</td>",
|
"<td class='language' id='EditorEng' title='Label English' onclick='clickLanguage(\"EditorEng\")'>English</td>",
|
||||||
"<td class='language' id='EditorFin' title='Label Finnish' onclick='clickLanguage(\"\")'>Finnish</td>",
|
"<td class='language' id='EditorFin' title='Label Finnish' onclick='clickLanguage(\"\")'>Finnish</td>",
|
||||||
"<td class='language' id='EditorFre' title='Label French' onclick='clickLanguage(\"\")'>French</td>",
|
"<td class='language' id='EditorFre' title='Label French' onclick='clickLanguage(\"EditorFre\")'>French</td>",
|
||||||
"<td class='language' id='EditorGer' title='Label German' onclick='clickLanguage(\"\")'>German</td>",
|
"<td class='language' id='EditorGer' title='Label German' onclick='clickLanguage(\"\")'>German</td>",
|
||||||
"<td class='language' id='EditorIta' title='Label Italian' onclick='clickLanguage(\"\")'>Italian</td>",
|
"<td class='language' id='EditorIta' title='Label Italian' onclick='clickLanguage(\"\")'>Italian</td>",
|
||||||
"<td class='language' id='EditorNor' title='Label Norwegian' onclick='clickLanguage(\"\")'>Norwegian</td>",
|
"<td class='language' id='EditorNor' title='Label Norwegian' onclick='clickLanguage(\"\")'>Norwegian</td>",
|
||||||
"<td class='language' id='EditorRus' title='Label Russian' onclick='clickLanguage(\"\")'>Russian</td>",
|
"<td class='language' id='EditorRus' title='Label Russian' onclick='clickLanguage(\"\")'>Russian</td>",
|
||||||
// "<td class='language' id='EditorSpa' title='Label Spanish' onclick='clickLanguage(\"EditorSpa\")'>Spanish</td>",
|
"<td class='language' id='EditorSpa' title='Label Spanish' onclick='clickLanguage(\"EditorSpa\")'>Spanish</td>",
|
||||||
"<td class='language' id='EditorSpa' title='Label Spanish' onclick='clickLanguage(\"\")'>Spanish</td>",
|
|
||||||
"<td class='language' id='EditorSwe' title='Label Swedish' onclick='clickLanguage(\"EditorSwe\")'>Swedish</td></tr>",
|
"<td class='language' id='EditorSwe' title='Label Swedish' onclick='clickLanguage(\"EditorSwe\")'>Swedish</td></tr>",
|
||||||
"</table>");
|
"</table>");
|
||||||
return languages.join("");
|
return languages.join("");
|
||||||
@@ -406,6 +411,7 @@ function applyLanguage() {
|
|||||||
for (var i = 0, j = langsToLinearize.length; i < j; i++) {
|
for (var i = 0, j = langsToLinearize.length; i < j; i++) {
|
||||||
var absStr = langsToLinearize[i].getAttribute("title");
|
var absStr = langsToLinearize[i].getAttribute("title");
|
||||||
var lin = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree(absStr, editorGrammar.abstract.startcat));
|
var lin = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree(absStr, editorGrammar.abstract.startcat));
|
||||||
|
lin = lin.substring(0,1).toUpperCase().concat(lin.substring(1))
|
||||||
if (!langsToLinearize[i].firstChild) {
|
if (!langsToLinearize[i].firstChild) {
|
||||||
var txt = document.createTextNode(lin);
|
var txt = document.createTextNode(lin);
|
||||||
langsToLinearize[i].appendChild(txt);
|
langsToLinearize[i].appendChild(txt);
|
||||||
@@ -416,9 +422,10 @@ function applyLanguage() {
|
|||||||
}
|
}
|
||||||
var actionsToLinearize = document.getElementById("actionsTable").getElementsByTagName("td");
|
var actionsToLinearize = document.getElementById("actionsTable").getElementsByTagName("td");
|
||||||
for (var i = 0, j = actionsToLinearize.length; i < j; i++) {
|
for (var i = 0, j = actionsToLinearize.length; i < j; i++) {
|
||||||
if (actionsToLinearize[i].getAttribute("class") == "action") {
|
if (actionsToLinearize[i].className == "action") {
|
||||||
var absStr = actionsToLinearize[i].getAttribute("title");
|
var absStr = actionsToLinearize[i].getAttribute("title");
|
||||||
var lin = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree(absStr, editorGrammar.abstract.startcat));
|
var lin = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree(absStr, editorGrammar.abstract.startcat));
|
||||||
|
lin = lin.substring(0,1).toUpperCase().concat(lin.substring(1))
|
||||||
if (!actionsToLinearize[i].firstChild) {
|
if (!actionsToLinearize[i].firstChild) {
|
||||||
var txt = document.createTextNode(lin);
|
var txt = document.createTextNode(lin);
|
||||||
actionsToLinearize[i].appendChild(txt);
|
actionsToLinearize[i].appendChild(txt);
|
||||||
@@ -430,23 +437,28 @@ function applyLanguage() {
|
|||||||
}
|
}
|
||||||
var messageToLinearize = document.getElementById("refgenRefRandom");
|
var messageToLinearize = document.getElementById("refgenRefRandom");
|
||||||
if (messageToLinearize) {
|
if (messageToLinearize) {
|
||||||
messageToLinearize.firstChild.firstChild.nodeValue = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("RandomlyCommand Select IndefSgDet Refinement", editorGrammar.abstract.startcat));
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("RandomlyCommand Select IndefSgDet Refinement", editorGrammar.abstract.startcat));
|
||||||
|
messageToLinearize.firstChild.firstChild.nodeValue = msg.substring(0,1).toUpperCase().concat(msg.substring(1));
|
||||||
}
|
}
|
||||||
var messageToLinearize = document.getElementById("nextRefsNext");
|
var messageToLinearize = document.getElementById("nextRefsNext");
|
||||||
if (messageToLinearize) {
|
if (messageToLinearize) {
|
||||||
messageToLinearize.firstChild.firstChild.nodeValue = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("CommandAdj Show DefSgDet Next Page", editorGrammar.abstract.startcat));
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("CommandAdj Show DefSgDet Next Page", editorGrammar.abstract.startcat));
|
||||||
|
messageToLinearize.firstChild.firstChild.nodeValue = msg.substring(0,1).toUpperCase().concat(msg.substring(1));
|
||||||
}
|
}
|
||||||
messageToLinearize = document.getElementById("nextRefsPrevious");
|
messageToLinearize = document.getElementById("nextRefsPrevious");
|
||||||
if (messageToLinearize) {
|
if (messageToLinearize) {
|
||||||
messageToLinearize.firstChild.firstChild.nodeValue = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("CommandAdj Show DefSgDet Previous Page", editorGrammar.abstract.startcat));
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("CommandAdj Show DefSgDet Previous Page", editorGrammar.abstract.startcat));
|
||||||
|
messageToLinearize.firstChild.firstChild.nodeValue = msg.substring(0,1).toUpperCase().concat(msg.substring(1));
|
||||||
}
|
}
|
||||||
var messageToLinearize = document.getElementById("nextWrapsNext");
|
var messageToLinearize = document.getElementById("nextWrapsNext");
|
||||||
if (messageToLinearize) {
|
if (messageToLinearize) {
|
||||||
messageToLinearize.firstChild.firstChild.nodeValue = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("CommandAdj Show DefSgDet Next Page", editorGrammar.abstract.startcat));
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("CommandAdj Show DefSgDet Next Page", editorGrammar.abstract.startcat));
|
||||||
|
messageToLinearize.firstChild.firstChild.nodeValue = msg.substring(0,1).toUpperCase().concat(msg.substring(1));
|
||||||
}
|
}
|
||||||
messageToLinearize = document.getElementById("nextWrapsPrevious");
|
messageToLinearize = document.getElementById("nextWrapsPrevious");
|
||||||
if (messageToLinearize) {
|
if (messageToLinearize) {
|
||||||
messageToLinearize.firstChild.firstChild.nodeValue = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("CommandAdj Show DefSgDet Previous Page", editorGrammar.abstract.startcat));
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("CommandAdj Show DefSgDet Previous Page", editorGrammar.abstract.startcat));
|
||||||
|
messageToLinearize.firstChild.firstChild.nodeValue = msg.substring(0,1).toUpperCase().concat(msg.substring(1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -529,18 +541,21 @@ function clickRefine(actName) {
|
|||||||
switch(node.type)
|
switch(node.type)
|
||||||
{
|
{
|
||||||
case "String":
|
case "String":
|
||||||
newType = prompt(editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("Command Enter IndefSgDet String_N", editorGrammar.abstract.startcat)),'String');
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("Command Enter IndefSgDet String_N", editorGrammar.abstract.startcat));
|
||||||
|
newType = prompt(msg.substring(0,1).toUpperCase().concat(msg.substring(1)),'String');
|
||||||
if (!newType) { newType = "AutoString"; }
|
if (!newType) { newType = "AutoString"; }
|
||||||
break;
|
break;
|
||||||
case "Int":
|
case "Int":
|
||||||
while (isNaN(newType) || (newType && newType.indexOf(".") != -1)) {
|
while (isNaN(newType) || (newType && newType.indexOf(".") != -1)) {
|
||||||
newType = prompt(editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("Command Enter IndefSgDet Integer_N", editorGrammar.abstract.startcat)),'Int');
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("Command Enter IndefSgDet Integer_N", editorGrammar.abstract.startcat));
|
||||||
|
newType = prompt(msg.substring(0,1).toUpperCase().concat(msg.substring(1)),'Int');
|
||||||
}
|
}
|
||||||
if (!newType) { newType = "8"; }
|
if (!newType) { newType = "8"; }
|
||||||
break;
|
break;
|
||||||
case "Float":
|
case "Float":
|
||||||
while (isNaN(newType)) {
|
while (isNaN(newType)) {
|
||||||
newType = prompt(editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("Command Enter IndefSgDet Float_N", editorGrammar.abstract.startcat)),'Float');
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("Command Enter IndefSgDet Float_N", editorGrammar.abstract.startcat));
|
||||||
|
newType = prompt(msg.substring(0,1).toUpperCase().concat(msg.substring(1)),'Float');
|
||||||
}
|
}
|
||||||
if (!newType) { newType = "8.0"; }
|
if (!newType) { newType = "8.0"; }
|
||||||
if (newType.indexOf(".") == -1) { newType += ".0"; }
|
if (newType.indexOf(".") == -1) { newType += ".0"; }
|
||||||
@@ -593,7 +608,6 @@ function pushUndoClearRedo() {
|
|||||||
|
|
||||||
// Gets the refinements to display
|
// Gets the refinements to display
|
||||||
function showRefinements(nodeName) {
|
function showRefinements(nodeName) {
|
||||||
// var refs = getAvailableRefinements(nodeName);
|
|
||||||
var refs = getAvailableRefinements(nodeName, abstractTree, grammar);
|
var refs = getAvailableRefinements(nodeName, abstractTree, grammar);
|
||||||
var rowsPerPage = 9;
|
var rowsPerPage = 9;
|
||||||
var pages = Math.floor(refs.length / rowsPerPage);
|
var pages = Math.floor(refs.length / rowsPerPage);
|
||||||
@@ -822,7 +836,8 @@ function clickWrap(actName) {
|
|||||||
var wrappers = showWrappers(node.caption);
|
var wrappers = showWrappers(node.caption);
|
||||||
document.getElementById("refFrame").innerHTML = wrappers;
|
document.getElementById("refFrame").innerHTML = wrappers;
|
||||||
if (wrappers.length <= 31) {
|
if (wrappers.length <= 31) {
|
||||||
alert(editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("ErrorMessage Available Wrapper", editorGrammar.abstract.startcat)));
|
var lin = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("ErrorMessage Available Wrapper", editorGrammar.abstract.startcat));
|
||||||
|
alert(lin.substring(0,1).toUpperCase().concat(lin.substring(1)));
|
||||||
document.getElementById("actFrame").innerHTML = showActions();
|
document.getElementById("actFrame").innerHTML = showActions();
|
||||||
nodeClick(selectedNode);
|
nodeClick(selectedNode);
|
||||||
}
|
}
|
||||||
@@ -834,7 +849,6 @@ function clickWrap(actName) {
|
|||||||
function showWrappers(nodeCaption) {
|
function showWrappers(nodeCaption) {
|
||||||
var nodeType = grammar.abstract.types[nodeCaption].cat;
|
var nodeType = grammar.abstract.types[nodeCaption].cat;
|
||||||
var rowsPerPage = 10;
|
var rowsPerPage = 10;
|
||||||
// var availWrappers = getAvailableWrappers(nodeType);
|
|
||||||
var availWrappers = getAvailableWrappers(nodeType, grammar, selectedNode);
|
var availWrappers = getAvailableWrappers(nodeType, grammar, selectedNode);
|
||||||
var pages = Math.floor(availWrappers.length / rowsPerPage);
|
var pages = Math.floor(availWrappers.length / rowsPerPage);
|
||||||
var upperLimit;
|
var upperLimit;
|
||||||
@@ -880,7 +894,8 @@ function clickParse(actName) {
|
|||||||
if (selectedNode) {
|
if (selectedNode) {
|
||||||
refPageCounter = 0;
|
refPageCounter = 0;
|
||||||
parseTrees = undefined;
|
parseTrees = undefined;
|
||||||
var string = prompt(editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("Command Enter IndefSgDet String_N", editorGrammar.abstract.startcat)),'String');
|
var msg = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("Command Enter IndefSgDet String_N", editorGrammar.abstract.startcat));
|
||||||
|
var string = prompt(msg.substring(0,1).toUpperCase().concat(msg.substring(1)),'String');
|
||||||
if (string || string == "") {
|
if (string || string == "") {
|
||||||
for (var i in grammar.concretes) {
|
for (var i in grammar.concretes) {
|
||||||
parseTrees = grammar.concretes[i].parser.parseString(string, node.cat);
|
parseTrees = grammar.concretes[i].parser.parseString(string, node.cat);
|
||||||
@@ -898,7 +913,8 @@ function clickParse(actName) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else { nodeClick(selectedNode); return false; }
|
} else { nodeClick(selectedNode); return false; }
|
||||||
alert(editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("ErrorMessage Available Tree", editorGrammar.abstract.startcat)));
|
var lin = editorGrammar.concretes[selectedLanguage].linearize(editorGrammar.abstract.parseTree("ErrorMessage Available Tree", editorGrammar.abstract.startcat));
|
||||||
|
alert(lin.substring(0,1).toUpperCase().concat(lin.substring(1)));
|
||||||
}
|
}
|
||||||
nodeClick(selectedNode);
|
nodeClick(selectedNode);
|
||||||
}
|
}
|
||||||
@@ -980,7 +996,6 @@ function clickRandomTree(actName) {
|
|||||||
function refClick(refName) {
|
function refClick(refName) {
|
||||||
if (selectedNode) {
|
if (selectedNode) {
|
||||||
if (refName == "genRefRandom") {
|
if (refName == "genRefRandom") {
|
||||||
// var refs = getAvailableRefinements(selectedNode);
|
|
||||||
var refs = getAvailableRefinements(selectedNode, abstractTree, grammar);
|
var refs = getAvailableRefinements(selectedNode, abstractTree, grammar);
|
||||||
refName = refs[Math.floor(refs.length * Math.random())];
|
refName = refs[Math.floor(refs.length * Math.random())];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,12 +187,6 @@ Int.prototype.setTag = function(tag) { if (!this.tag) { this.tag = tag; } };
|
|||||||
|
|
||||||
/* Type annotation */
|
/* Type annotation */
|
||||||
|
|
||||||
/*
|
|
||||||
function Abstract(startcat) {
|
|
||||||
this.types = new Array();
|
|
||||||
this.startcat = startcat;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
function GFAbstract(startcat, types) {
|
function GFAbstract(startcat, types) {
|
||||||
this.startcat = startcat;
|
this.startcat = startcat;
|
||||||
this.types = types;
|
this.types = types;
|
||||||
@@ -275,15 +269,9 @@ function Type(args, cat) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Linearization */
|
/* Linearization */
|
||||||
/*
|
|
||||||
function Concrete(abstr) {
|
|
||||||
this.abstr = abstr;
|
|
||||||
this.rules = new Array();
|
|
||||||
this.parser = undefined;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
function GFConcrete(flags, rules, parser) {
|
function GFConcrete(flags, rules, parser) {
|
||||||
this.flags = flags;
|
this.flags = flags;
|
||||||
this.rules = rules;
|
this.rules = rules;
|
||||||
if (parser) {
|
if (parser) {
|
||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
@@ -761,7 +749,7 @@ function rangeConcatLin (lin1, lin2) {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Performs range concatenation on a linarization row
|
// Performs range concatenation on a linearization row
|
||||||
function rangeConcatLins (lins) {
|
function rangeConcatLins (lins) {
|
||||||
var newLins = new Array();
|
var newLins = new Array();
|
||||||
newLins.push(lins.shift());
|
newLins.push(lins.shift());
|
||||||
@@ -779,7 +767,7 @@ function rangeConcatLins (lins) {
|
|||||||
return newLins;
|
return newLins;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Performs range restriction on an element of a linarization row
|
// Performs range restriction on an element of a linearization row
|
||||||
// while keeping track of the tokens that have been used
|
// while keeping track of the tokens that have been used
|
||||||
function rangeRestLinTerm(tokens, lin, rangesNotConsumed) {
|
function rangeRestLinTerm(tokens, lin, rangesNotConsumed) {
|
||||||
if (lin.id == "argProj") { return new Array(lin); }
|
if (lin.id == "argProj") { return new Array(lin); }
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -78,7 +78,7 @@ body {
|
|||||||
#tree {
|
#tree {
|
||||||
left: -10px;
|
left: -10px;
|
||||||
top: -10px;
|
top: -10px;
|
||||||
width: 230px;
|
width: 250px;
|
||||||
height: 250px;
|
height: 250px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
@@ -197,28 +197,35 @@ td.hotKey {
|
|||||||
td.language {
|
td.language {
|
||||||
color: black;
|
color: black;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
|
margin: 1px;
|
||||||
|
padding: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
td.language:hover {
|
td.language:hover {
|
||||||
color: blue;
|
color: blue;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
margin: 1px;
|
||||||
|
padding: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
td.selected {
|
td.selected {
|
||||||
color: white;
|
color: white;
|
||||||
background-color: #3366CC;
|
background-color: #3366CC;
|
||||||
|
margin: 1px;
|
||||||
|
padding: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
td.selected:hover {
|
td.selected:hover {
|
||||||
color: white;
|
color: white;
|
||||||
background-color: #3366CC;
|
background-color: #3366CC;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
margin: 1px;
|
||||||
|
padding: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
margin-bottom: 40px;
|
margin-bottom: 40px;
|
||||||
text-align: justify;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
span.normal {
|
span.normal {
|
||||||
|
|||||||
Reference in New Issue
Block a user