Skip to content

Commit a5ff264

Browse files
Form ticket listing with categories.
1 parent 992698d commit a5ff264

File tree

11 files changed

+157
-23
lines changed

11 files changed

+157
-23
lines changed

src/components/SFormsDisplay.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ export class SFormsDisplay extends React.Component {
7878
return <Alert variant={"light"} className={"h-10"}>
7979
Form not specified...
8080
</Alert>
81+
} else if (!this.state.rawJsonForm) {
82+
return <Alert variant={"light"} className={"h-10"}>
83+
Wait...
84+
</Alert>;
8185
}
8286

8387
const modalProps = {
@@ -101,21 +105,16 @@ export class SFormsDisplay extends React.Component {
101105
enableForwardSkip: true,
102106
horizontalWizardNav: true
103107
};
104-
if ((this.props.contextUri && this.state.rawJsonForm) || (this.props.version1 && this.props.version2 && this.state.rawJsonForm)) {
105-
return <SForms
108+
109+
return <div>
110+
<SForms
106111
ref={this.refForm}
107112
form={this.state.rawJsonForm}
108113
options={options}
109114
fetchTypeAheadValues={this.fetchTypeAheadValues}
110115
isFormValid={(isFormValid) => this.setState({isFormValid})}
111116
/>;
112-
} else {
113-
return <Alert variant={"light"} className={"h-10"}>
114-
Wait...
115-
</Alert>;
116-
}
117-
118-
117+
</div>
119118
}
120119
}
121120

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import React from "react";
2+
import {CategorizedTicketsList} from "./ticket/CategorizedTicketsList";
3+
import {SFormsDisplay} from "./SFormsDisplay";
4+
import {CreateTicketForm} from "./ticket/CreateTicketForm";
5+
6+
export class TicketsWithSFormsBoard extends React.Component {
7+
8+
constructor() {
9+
super();
10+
}
11+
12+
render() {
13+
return <div>
14+
<h5>Tickets</h5>
15+
<CategorizedTicketsList projectName={this.props.projectName} contextUri={this.props.contextUri}/>
16+
<br/>
17+
<CreateTicketForm/>
18+
<br/>
19+
<h5>Form display</h5>
20+
<SFormsDisplay projectName={this.props.projectName} contextUri={this.props.contextUri}/>
21+
</div>;
22+
}
23+
}
24+

src/components/context/ContextOverview.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from 'react';
22
import API from "../../api";
3-
import {SFormsDisplay} from "../SFormsDisplay";
43
import Button from "react-bootstrap/Button";
54
import ToggleButton from "react-bootstrap/ToggleButton";
65
import Row from "react-bootstrap/Row";
@@ -11,6 +10,7 @@ import OverlayTrigger from "react-bootstrap/OverlayTrigger";
1110
import Tooltip from "react-bootstrap/Tooltip";
1211
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
1312
import {faQuestionCircle} from "@fortawesome/free-solid-svg-icons";
13+
import {SFormsDisplay} from "../SFormsDisplay";
1414

1515
export class ContextOverview extends React.Component {
1616

@@ -135,8 +135,7 @@ export class ContextOverview extends React.Component {
135135
</div>
136136
</Col>
137137
<Col xs={6}>
138-
<SFormsDisplay key={this.state.activeContext}
139-
contextUri={this.state.activeContext}
138+
<SFormsDisplay contextUri={this.state.activeContext}
140139
projectName={this.props.match.params.projectName}/>
141140
</Col>
142141
</Row>

src/components/form/AnswersCompareBoard.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export class AnswersCompareBoard extends React.Component {
119119
render() {
120120
if (!this.state.isInitialized) {
121121
return <Alert variant={"light"} className={"h-10"}>
122-
Parameters for comparation not specified.
122+
Parameters for comparison not specified.
123123
</Alert>
124124
}
125125

src/components/form/RecordList.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,24 @@ export class RecordList extends React.Component {
1717
}
1818
}
1919

20+
componentDidMount() {
21+
this.requestRecordsFromProps();
22+
}
23+
24+
requestRecordsFromProps() {
25+
if (this.props.requestRecords) {
26+
this.props.requestRecords().then(response => {
27+
return response.data;
28+
}).then(data => {
29+
this.setState({
30+
records: data
31+
});
32+
}).catch(error => {
33+
console.log(error)
34+
});
35+
}
36+
}
37+
2038
render() {
2139
const records = this.props?.records || this.state.records
2240

src/components/form/RecordsOverview.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from 'react';
2-
import {SFormsDisplay} from "../SFormsDisplay";
32
import Row from "react-bootstrap/Row";
43
import Col from "react-bootstrap/Col";
54
import Container from "react-bootstrap/Container";
@@ -11,6 +10,7 @@ import VersionsHistogramChart from "../graphs/VersionsHistogramChart";
1110
import {ProjectStatistics} from "./ProjectStatistics";
1211
import {FormTemplateVersionCompareBoard} from "../formtemplate/FormTemplateVersionCompareBoard";
1312
import {AnswersCompareBoard} from "./AnswersCompareBoard";
13+
import {TicketsWithSFormsBoard} from "../TicketsWithSFormsBoard";
1414

1515
const LEFT_DISPLAY_VERSIONS_LIST = "DISPLAY_VERSIONS_LIST";
1616
const LEFT_DISPLAY_FORMS_LIST = "DISPLAY_FORMS_LIST";
@@ -77,8 +77,8 @@ export class RecordsOverview extends React.Component {
7777
let rightComponent;
7878
switch (this.state.rightComponent) {
7979
case RIGHT_DISPLAY_S_FORMS:
80-
rightComponent = <SFormsDisplay contextUri={this.state.activeContext}
81-
projectName={this.props.match.params.projectName}/>
80+
rightComponent = <TicketsWithSFormsBoard contextUri={this.state.activeContext}
81+
projectName={this.props.match.params.projectName}/>
8282
break;
8383
case RIGHT_COMPARE_VERSIONS:
8484
rightComponent =
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import React from 'react';
2+
import Alert from "react-bootstrap/Alert";
3+
import API from "../../api";
4+
import {TicketLine} from "./TicketLine";
5+
import Tabs from "react-bootstrap/Tabs";
6+
import Tab from "react-bootstrap/Tab";
7+
8+
function createTicketLines(tickets) {
9+
return (tickets && tickets.length !== 0) ? tickets.map((ticket, i) => {
10+
return <TicketLine key={i}
11+
name={ticket.name}
12+
description={ticket.description}
13+
url={ticket.url}
14+
customFields={ticket.customFields}
15+
/>;
16+
}) : <Alert variant={"light"} className={"h-10"}>
17+
The list is empty.
18+
</Alert>;
19+
}
20+
21+
export class CategorizedTicketsList extends React.Component {
22+
23+
constructor(props) {
24+
super(props);
25+
this.state = {
26+
formTickets: null,
27+
formVersionTickets: null,
28+
questionTickets: null
29+
}
30+
}
31+
32+
componentDidMount() {
33+
this.requestTickets();
34+
}
35+
36+
requestTickets() {
37+
API.post("/rest/ticket/category", null, {
38+
params: {
39+
"projectName": this.props.projectName,
40+
"contextUri": this.props.contextUri,
41+
}
42+
}).then(response => {
43+
return response.data;
44+
}).then(ticketsInCategories => {
45+
this.setState({
46+
formTickets: ticketsInCategories.formTickets,
47+
formVersionTickets: ticketsInCategories.formVersionTickets,
48+
questionTickets: ticketsInCategories.questionTickets
49+
});
50+
});
51+
}
52+
53+
render() {
54+
55+
const formTickets = this.state.formTickets
56+
const formVersionTickets = this.state.formVersionTickets
57+
const questionTickets = this.state.questionTickets
58+
59+
if (!(formTickets && formVersionTickets && questionTickets)) {
60+
return <Alert variant={"light"} className={"h-10"}>
61+
Loading tickets...
62+
</Alert>
63+
}
64+
65+
const formTicketsLines = createTicketLines(formTickets);
66+
const versionTicketsLines = createTicketLines(formVersionTickets);
67+
const questionTicketsLines = createTicketLines(questionTickets);
68+
69+
return <div>
70+
<Tabs defaultActiveKey="#" transition={false} id="ticket-tabs">
71+
<Tab eventKey="form" title={"Form related (" + formTickets.length + ")"}>
72+
<br/>
73+
{formTicketsLines}
74+
</Tab>
75+
<Tab eventKey="formVersion" title={"Form version related (" + formVersionTickets.length + ")"}>
76+
<br/>
77+
{versionTicketsLines}
78+
</Tab>
79+
<Tab eventKey="question" title={"Question related (" + questionTickets.length + ")"}>
80+
<br/>
81+
{questionTicketsLines}
82+
</Tab>
83+
</Tabs>
84+
</div>
85+
}
86+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import React from "react";
2+
3+
export class CreateTicketForm extends React.Component {
4+
5+
render() {
6+
return <div/>;
7+
}
8+
9+
}

src/components/ticket/TicketLine.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ export class TicketLine extends React.Component {
2121
<br/>
2222
<span>Link: <a href={this.props.url} target="_blank">link</a></span>
2323
<br/>
24-
<span>Form version identifier: <b>{this.props?.customFields["SpecificFormVersionID"]}</b></span>
24+
<span>Form version identifier: <b>{this.props?.customFields["SpecificFormVersionKEY"]}</b></span>
2525
<br/>
26-
<span>Form identifier: <b>{this.props?.customFields["SpecificFormID"]}</b></span>
26+
<span>Form identifier: <b>{this.props?.customFields["SpecificFormCU"]}</b></span>
2727
<br/>
28-
<span>Question: <b>{this.props?.customFields["SpecificQuestion"]}</b></span>
28+
<span>Question: <b>{this.props?.customFields["SpecificQuestionQO"]}</b></span>
2929
<br/>
3030

3131
</div>

src/components/ticket/TicketsOverview.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Row from "react-bootstrap/Row";
33
import Col from "react-bootstrap/Col";
44
import Container from "react-bootstrap/Container";
55
import API from "../../api";
6-
import {TicketsList} from "./TicketsList";
6+
import {UncategorizedTicketsList} from "./UncategorizedTicketsList";
77

88
export class TicketsOverview extends React.Component {
99

@@ -41,7 +41,7 @@ export class TicketsOverview extends React.Component {
4141
<Row>
4242
<Col>
4343
<div>
44-
<TicketsList projectName={this.props.match.params.projectName}/>
44+
<UncategorizedTicketsList projectName={this.props.match.params.projectName}/>
4545
</div>
4646
</Col>
4747
</Row>

0 commit comments

Comments
 (0)