This question about Topic Markup Language and applications: Task closed
How to set the search output in different colours
Hi all,
I have a dataform like this:
Name |
Type |
Size |
Value |
Message |
Attributes |
|
Document Title |
Text |
50 |
|
Title of the document |
| Description | Text | 80 | | Short description of the content of the document | |
| R&D Deliverable | Select | 1 | Mandatory, Optional | Is the document optional or mandatory deliverable | |
| State Of Document At Gate | Select | 1 | Not applicable, Draft (In work), Final | State of the document at gate | |
Then I can make a search like
|
Title |
Derliverable |
State At Review |
Description |
%S E A R C H{" (
StateOfDocumentAtGate='Final' OR
StateOfDocumentAtGate='Draft (In work)'"
web="Documents" nonoise="on" type="query"
format="|
$formfield(DocumentTitle) | $formfield(R&DDeliverable) |$formfield(
StateOfDocumentAtGate) | $formfield(Description) |
}%
This works fine.... but I would like to have the output of the search function to be green if it is a R&DDeliverable=Mandatory else Yellow....
I have tried with this oe below but it doesnt work.....
|
Title |
Derliverable |
State At Review |
Description |
%S E A R C H{" (
StateOfDocumentAtGate='Final' OR
StateOfDocumentAtGate='Draft (In work)'"
web="Documents" nonoise="on" type="query"
format="<span style="color:$percentIF{$quotPMPDeliverable='Mandatory'$quot then=$quotgreen$quot else=$quotred$quot%">|
$formfield(DocumentTitle) | $formfield(R&DDeliverable) |$formfield(
StateOfDocumentAtGate) | $formfield(Description) |
}%
What do I do wrong?
Thanks Peter
--
PeterSvendsen - 10 Feb 2012
Try something like this (colours only those topics created by
ArthurClemens):
%STARTSECTION{"colours"}%
<style>
.classificationSupportQuestion {background-color: red;}
.classificationFrequentlyAskedQuestion {background-color: green;}
.classificationExtensionHub {background-color: blue;}
.classificationSupplementalDoc {background-color: yellow;}
.classificationWikiConsultantTopic {background-color: green;}
.classificationAdminTopic {background-color: orange;}
.boring {font-weight: bold;}
</style>
%SEARCH{
"TopicClassification"
type="query"
pager="on"
pagesize="25"
header="| *Topic* | *Classification* | *Creator* |"
format="| [[$web.$topic][$topic]] | <span class='$percntIF{
\"'$createusername'='ArthurClemens'\"
then=\"classification$formfield(TopicClassification)\"
else=\"boring\"
}$percnt'>$formfield(TopicClassification)</span> | [[$createwikiusername][$createusername]] |"
}%%ENDSECTION{"colours"}%
Test:
Number of topics: 25
--
PaulHarvey - 13 Feb 2012
Thanks
SvenDowideit for cleaning up my initial answer.
Peter, does this work for you? If not, set this question back to 'asked'.
--
PaulHarvey - 13 Feb 2012
PeterSvendsen added the following:
The actual case is that I use the this to search for all delivery (documents) for projects and if the documents are mandatory I would like to make them bold or have a colour..... I have adjusted your example above... First.. I search for all documents that must be in either draft or final version at the review... and then I look if the document is a optional or mandatory through the formfield R&DDelivery... if it is mandatoy I try to make it red... (red as test, need to see how it looks, I may change this to be bold only later)
When I test all of the hits gets bold..... so I'm not 100% up and running... still looking into the issue....
%STARTSECTION{"colours"}%
<style>
..classificationMandatory {background-color: red;}
..classificationOptional {background-color: yellow;}
.boring {font-weight: bold;}
</style>
%SEARCH{" (StateOfDocumentAtHWReviewInt='Final' OR
StateOfDocumentAtHWReviewInt='Draft (In work)') AND
FunctionArea='Design & Test' AND
AreaOwner='Hardware'"
web="Documents" nonoise="on" type="query"
header="| *Title* | *PMP deliverables* | *State At Review* | *Description* |"
format="| [[$topic][$formfield(DocumentTitle)]] | <span class='$percntIF{
\"'$R&DDeliverable'='Mandatory'\"
then=\"classification$formfield(PMPDeliverableAtHWReviewInt)\"
else=\"boring\"
}$percnt'>$formfield(PMPDeliverableAtHWReviewInt)</span> | $formfield(StateOfDocumentAtHWReviewInt) | $formfield(Description) | "
}%%ENDSECTION{"colours"}%
Ah, there are three problems that I can see
- Your
<style>
markup doesn't seem to be valid css (too many dots). It should be .classification...
, not ..classification...
- I don't think 'R&DDeliverable' is a valid field name. Foswiki probably stores it as 'RDDeliverable', and you should perhaps query it that way.
-
IF{\"'$R&DDeliverable'='Mandatory'\"...
will always be false, because you are asking the IF to compare two literal strings (quoted with ' ) which are not the same. The LHS quoted string could be IF{\"'$formfield(RDDeliverable)'='Mandatory'\"...
or, if expanding RDDeliverable
causes problems, you can ask IF to test it directly, Eg. IF{\"'$web.$topic'/RDDeliverable='Mandatory'\"...
--
PaulHarvey - 13 Feb 2012
Thanks a lot Paul it seems to work very well.. now I get the bold color for mandatory documents. I have 2 additional questions:
- If I would like to whole line to be bold and not just the PMPDeliverableAtHWReviewInt I would expect the logic to be more simple but agian I run my head into the wall I can not see the solution! The only way I can solve the problem is to copy the IF... for all columbs in the output which I see as a big overhead...
- In the logic above... when will the line become red or Yellow? I have not seen a case for that yet....?
This works but seems to be a big overhead....
%STARTSECTION{"colours"}%
<style>
.classificationMandatory {background-color: red;}
.classificationOptional {background-color: yellow;}
.boring {font-weight: bold;}
</style>
%SEARCH{" (StateOfDocumentAtHWReviewInt='Final' OR
StateOfDocumentAtHWReviewInt='Draft (In work)') AND
FunctionArea='Design & Test' AND
AreaOwner='Hardware'"
web="Documents" nonoise="on" type="query"
header="| *Title* | *PMP deliverables* | *State At Review* | *Description* |"
format="| <span class='$percntIF{\"'$formfield(RDDeliverable)'='Optional'\"
then=\"classification$formfield(DocumentTitle)\"
else=\"boring\"
}$percnt'>[[$topic][$formfield(DocumentTitle)]] </span> | <span class='$percntIF{\"'$formfield(RDDeliverable)'='Optional'\"
then=\"classification$formfield(PMPDeliverableAtHWReviewInt)\"
else=\"boring\"
}$percnt'>$formfield(PMPDeliverableAtHWReviewInt)</span> | <span class='$percntIF{\"'$formfield(RDDeliverable)'='Optional'\"
then=\"classification$formfield(StateOfDocumentAtHWReviewInt)\"
else=\"boring\"
}$percnt'>$formfield(StateOfDocumentAtHWReviewInt)</span> | <span class='$percntIF{\"'$formfield(RDDeliverable)'='Optional'\"
then=\"classification$formfield(Description))\"
else=\"boring\" }$percnt'>$formfield(Description)</span> | "
}%%ENDSECTION{"colours"}%
--
PeterSvendsen - 13 Feb 2012
- Hrm, I think if you want better efficiency, you should avoid TML table constructs (
|
symbols) and emit HTML directly. That way, you could apply a class for the row (<tr class="boring">
...) and use a CSS style like tr.boring td { background-color: red }
- I'm not sure if you're using this pattern properly - what is 'DocumentTitle' allowed to contain? When we have:
class="classification$formfield(Foo)"
, we want the 'Foo' field to only contain one of several existing possible values; like Mandatory, Optional or Banana. Then, we write definitions for all the possible CSS classes which that field might generate: classificationMandatory
, classificationOptional
and classificationBana
--
PaulHarvey - 14 Feb 2012
- It seems that there are room for improvements here.
- I may not use the pattern properly but would like to optimize it so I dont cause extra work for the application.
- I have placed a screen shoot how it looks today and how I would like it to look.... I would expect that the red and yellow classes are not needed and can be moved due to the fact that the mandatory documents are highlighted with bold.
- As you write in your example class="classification$formfield(Foo) I properly use it the wrong way.... could you give me a hint how it then would look like or a place where I can find the information?
- As you see the DocumentTitle is a title and could therefore easy be "This is a document title"
--
PeterSvendsen - 15 Feb 2012
Try this:
%STARTSECTION{"colours"}%
<style>
.classificationMandatory {font-weight: bold;}
</style>
%SEARCH{" (StateOfDocumentAtHWReviewInt='Final' OR
StateOfDocumentAtHWReviewInt='Draft (In work)') AND
FunctionArea='Design & Test' AND
AreaOwner='Hardware'"
web="Documents" nonoise="on" type="query"
header="| *Title* | *PMP deliverables* | *State At Review* | *Description* |"
format="| <span class='classification$formfield(RDDeliverable)'>[[$topic][$formfield(DocumentTitle)]] </span> \
| <span class='classification$formfield(RDDeliverable)'>$formfield(PMPDeliverableAtHWReviewInt)</span> \
| <span class='classification$formfield(RDDeliverable)'>$formfield(StateOfDocumentAtHWReviewInt)</span> \
| <span class='classification$formfield(RDDeliverable)'>$formfield(Description)</span> |"
}%%ENDSECTION{"colours"}%
--
PaulHarvey - 15 Feb 2012
This is perfect Paul thanks a lot
--
PeterSvendsen - 15 Feb 2012