diff --git a/src/app/document-detail/document-detail.component.ts b/src/app/document-detail/document-detail.component.ts index 4b1f05702d03cae250f8b1e8b71a4a5163f434af..2c1101f268f9f5334a1214c45c944e801184ca9f 100644 --- a/src/app/document-detail/document-detail.component.ts +++ b/src/app/document-detail/document-detail.component.ts @@ -220,6 +220,7 @@ export class DocumentDetailComponent implements OnInit { const currentFinding = ({ studyid: srDomainFinding.studyid, domain: srDomainFinding.domain, + section: section.name, srseq: srDomainFinding.srseq, srrisk: srDomainFinding.srrisk, @@ -255,7 +256,7 @@ export class DocumentDetailComponent implements OnInit { srDomainId: srDomainFinding.srDomainId, findingId: srDomainFinding.findingId, status: srDomainFinding.status, - section: section.name, + sectionId: section.id, documentId: section.annotations.documentId }); @@ -274,8 +275,8 @@ export class DocumentDetailComponent implements OnInit { }); }); - if (section.annotations.srdomainfindings) { - section.annotations.srdomainfindings.forEach(newFinding => { + if (section.annotations.srDomainFindings) { + section.annotations.srDomainFindings.forEach(newFinding => { srDomainFindingsGlobal.push(newFinding); }); } @@ -445,11 +446,11 @@ export class DocumentDetailComponent implements OnInit { } updateFinding(data) { - const id = +this.route.snapshot.paramMap.get('id'); - if (data.status == Status.ADDED) { - this.documentService.addFinding(id, data).subscribe(_ => { }); + if (data.status == Status.NEW) { + data.status = Status.ADDED + this.reportService.addFinding(data.sectionId, data).subscribe(_ => { }, error => { data.status = Status.NEW }); } else { - this.documentService.updateFinding(id, data) + this.reportService.updateFinding(data.sectionId, data) .subscribe(text => { }); } diff --git a/src/app/documents/documents.component.ts b/src/app/documents/documents.component.ts index ab0feb6265e6d58ec7740e82af6f9cd6f95e5232..759b5be373ad20cd06f57778e0eb4c86d3c893a5 100644 --- a/src/app/documents/documents.component.ts +++ b/src/app/documents/documents.component.ts @@ -82,10 +82,10 @@ export class DocumentsComponent implements OnInit { paginationSize: 20, paginationSizeSelector: [10, 20, 40], columns: [ - { title: 'Name', field: 'name', headerSort: true, headerFilter: true }, - { title: 'File Name', field: 'fileName', headerSort: true, headerFilter: true }, - { title: 'Process Date', field: 'processDate', headerSort: true, headerFilter: true }, - { title: 'Status', field: 'status', headerSort: true, headerFilter: true }, + { title: 'Name', field: 'name', headerFilter: true }, + { title: 'File Name', field: 'fileName', headerFilter: true }, + { title: 'Process Date', field: 'processDate', headerFilter: true }, + { title: 'Status', field: 'status', headerFilter: true }, { title: '', width: 5, hozAlign: 'center', headerSort: false, cellClick: function (e, cell) { diff --git a/src/app/model/srdomainfinding.ts b/src/app/model/srdomainfinding.ts index 7f6dfebd42a5a2bb683bfbcc640ea575b8106b26..56897dd49c701fca40f835d8d21f3aed8102c613 100644 --- a/src/app/model/srdomainfinding.ts +++ b/src/app/model/srdomainfinding.ts @@ -1,34 +1,35 @@ export class SRDomainFinding { - studyid: String; - domain: String; - section: String; - srseq: String; - srrisk: String; - spgrpcd: String; - srgrpnam: String;; - srgrpdos: String; - srsex: String; - srstdy: String; - srstphse: String; - srobstdy: String; - srendy: String; - srenphse: String; - srobendy: String; - srdomain: String; - srspec: String; - srtstcd: String; - srfndg: String; - srores: String; - srobsv: String; - srobsq: String; - srsev: String; - srpcnt: String; - srsigf: String; - srtrtef: String; - srcomnt: String; + studyid: string; + domain: string; + section: string; + srseq: string; + srrisk: string; + spgrpcd: string; + srgrpnam: string;; + srgrpdos: string; + srsex: string; + srstdy: string; + srstphse: string; + srobstdy: string; + srendy: string; + srenphse: string; + srobendy: string; + srdomain: string; + srspec: string; + srtstcd: string; + srfndg: string; + srores: string; + srobsv: string; + srobsq: string; + srsev: string; + srpcnt: string; + srsigf: string; + srtrtef: string; + srcomnt: string; //other data - export: String; + export: string; srDomainId: number; findingId: number; status: string; + sectionId: number; } diff --git a/src/app/model/srdomainfindingstatus.ts b/src/app/model/srdomainfindingstatus.ts index 85adb548e27399bb9715964b7f2f38414b681e24..5e4c6e249ede8a6110238382786b1bec60f87835 100644 --- a/src/app/model/srdomainfindingstatus.ts +++ b/src/app/model/srdomainfindingstatus.ts @@ -2,5 +2,6 @@ export enum Status { NON_CURATED = "non_curated", REJECTED = "rejected", ACCEPTED = "accepted", - ADDED = "added" + ADDED = "added", + NEW = "new" } \ No newline at end of file diff --git a/src/app/pretoxsentences-tabulator/pretoxsentences-tabulator.component.ts b/src/app/pretoxsentences-tabulator/pretoxsentences-tabulator.component.ts index cf298f2012258751f31d6a58a06f89aad3b58e3f..1ee9bad611e5791e38833b01685da7fd26e1ff79 100644 --- a/src/app/pretoxsentences-tabulator/pretoxsentences-tabulator.component.ts +++ b/src/app/pretoxsentences-tabulator/pretoxsentences-tabulator.component.ts @@ -199,11 +199,11 @@ export class PretoxsentencesTabulatorComponent implements OnInit { { title: 'Section', field: 'section', cssClass: "tabulator-cell non-editable-cell", }, - { title: 'Finding', field: 'srfndg', headerSort: true, headerFilter: true },//SRFNDG + { title: 'Finding', field: 'srfndg', headerFilter: true },//SRFNDG //{title: 'Finding (Free Text)', field: 'srores', headerSort: true , headerFilter: false},//SRORES - { title: 'Test Name', field: 'srtstcd', headerSort: true, headerFilter: true },//SRTSTCD + { title: 'Test Name', field: 'srtstcd', headerFilter: true },//SRTSTCD { - title: 'Manifestation', field: 'srobsv', headerSort: true, headerFilter: true, editor: 'list', editable: false, editorParams: { + title: 'Manifestation', field: 'srobsv', headerFilter: true, editor: 'list', editable: false, editorParams: { values: [ 'I', 'D', @@ -214,16 +214,16 @@ export class PretoxsentencesTabulatorComponent implements OnInit { } },//SROBSV { - title: 'Domain', field: 'srdomain', headerSort: true, headerFilter: true, editor: 'list', editable: false, editorParams: { + title: 'Domain', field: 'srdomain', headerFilter: true, editor: 'list', editable: false, editorParams: { values: [ 'BW', 'BG', 'CL', 'CV', 'DD', 'EG', 'FW', 'LB', 'MA', 'MI', 'OM', 'PP', 'RE', 'TF', 'VS' ], autocomplete: true } },//SRDOMAIN - { title: 'Specimen', field: 'srspec', headerSort: true, headerFilter: true },//SRSPEC + { title: 'Specimen', field: 'srspec', headerFilter: true },//SRSPEC { - title: 'Sex', field: 'srsex', headerSort: true, headerFilter: true, editor: 'list', editable: false, editorParams: { + title: 'Sex', field: 'srsex', headerFilter: true, editor: 'list', editable: false, editorParams: { values: [ 'F', 'M', @@ -232,10 +232,10 @@ export class PretoxsentencesTabulatorComponent implements OnInit { autocomplete: true } },//SRSEX - { title: 'Dose', field: 'srgrpdos', headerSort: true, headerFilter: true },//SRGRPDOS - { title: 'Group', field: 'spgrpcd', headerSort: true, headerFilter: true },//SPGRPCD + { title: 'Dose', field: 'srgrpdos', headerFilter: true },//SRGRPDOS + { title: 'Group', field: 'spgrpcd', headerFilter: true },//SPGRPCD { - title: 'Treatment Related?', field: 'srtrtef', headerSort: true, headerFilter: true, editor: 'list', editable: false, editorParams: { + title: 'Treatment Related?', field: 'srtrtef', headerFilter: true, editor: 'list', editable: false, editorParams: { values: [ 'Y', 'N', diff --git a/src/app/reports/reports.component.ts b/src/app/reports/reports.component.ts index 6e7459726fe92babf3728b2aa1cd11095d615675..81d9c1a8df124bbaa24cdd81e136aef2e2f57e92 100644 --- a/src/app/reports/reports.component.ts +++ b/src/app/reports/reports.component.ts @@ -169,9 +169,9 @@ export class ReportsComponent implements OnInit { return '
'; } }, - { title: 'Name', field: 'fileName', headerSort: true, headerFilter: true }, - { title: 'Upload Date', field: 'uploadDate', headerSort: true, headerFilter: true }, - { title: 'Status', field: 'status', headerSort: true, headerFilter: true }, + { title: 'Name', field: 'fileName', headerFilter: true }, + { title: 'Upload Date', field: 'uploadDate', headerFilter: true }, + { title: 'Status', field: 'status', headerFilter: true }, { title: '', width: 5, hozAlign: 'center', headerSort: false, cellClick: function (e, cell) { diff --git a/src/app/services/document.service.ts b/src/app/services/document.service.ts index 6f91a5baa47553f0890c0df1d6a38765e9c752d7..42391abf4a3cdb711e68aa1df55e9c19582fbb3b 100644 --- a/src/app/services/document.service.ts +++ b/src/app/services/document.service.ts @@ -7,7 +7,6 @@ import { catchError, map, tap } from 'rxjs/operators'; import { Finding } from '../model/finding'; import { environment } from '../../environments/environment'; import { DocumentTracking } from '../model/document-tracking'; -import { SRDomainFinding } from '../model/srdomainfinding'; import { SRDomainDocument } from '../model/srdomaindocument'; const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }) @@ -97,35 +96,6 @@ export class DocumentService { ); } - /** Update Finding */ - updateFinding(id: number, finding: SRDomainFinding): any { - const url = `${this.documentsUrl}${id}/srfinding/update/`; - return this.http.put(url, finding).pipe( - tap(_ => this.log(`updateFinding`)), - catchError(this.handleError('updateFinding')) - ); - /*return this.http.post(url, finding).subscribe({ - next: data => { - alert(1); - alert(data); - }, - error: error => { - //this.errorMessage = error.message; - console.error('There was an error!', error); - } - })*/ - - } - - addFinding(id: number, finding: SRDomainFinding): any { - const url = `${this.documentsUrl}${id}/srfinding/add/`; - return this.http.put(url, finding).pipe( - tap(_ => this.log(`addFinding`)), - catchError(this.handleError('addFinding')) - ); - } - - /** show history tracking */ getHistory(id: number): Observable { const url = `${this.documentsUrl}${id}/tracking`; diff --git a/src/app/services/login.service.ts b/src/app/services/login.service.ts index ed8a6e2572f01e255ce9cc1d9eabf00085cfba3d..6fa98bca99a5acbb57c0f822fc7d6fbb6a6f7057 100644 --- a/src/app/services/login.service.ts +++ b/src/app/services/login.service.ts @@ -13,8 +13,8 @@ export class LoginService { USER_NAME_SESSION_ATTRIBUTE_NAME = 'authenticatedUser'; USER_BASIC_TOKEN_ATTRIBUTE_NAME = 'tokenUser'; - public username: String; - public password: String; + public username: string; + public password: string; public isLogged: boolean; diff --git a/src/app/services/report.service.ts b/src/app/services/report.service.ts index 55db43b3786173266f1415e8cba4223d4b011b03..538f5de082cad5834986d5dcbb49f59d66013a42 100644 --- a/src/app/services/report.service.ts +++ b/src/app/services/report.service.ts @@ -7,6 +7,7 @@ import { Finding } from '../model/finding'; import { Annotation } from '../model/annotation'; import { Report } from '../model/report'; import { environment } from '../../environments/environment'; +import { SRDomainFinding } from '../model/srdomainfinding'; const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }) }; @@ -132,6 +133,22 @@ export class ReportService { ); } + updateFinding(sectionId: number, finding: SRDomainFinding): any { + const url = `${this.reportsUrl}${sectionId}/srfinding/update/`; + return this.http.put(url, finding).pipe( + tap(_ => this.log(`updateFinding`)), + catchError(this.handleError('updateFinding')) + ); + } + + addFinding(sectionId: number, finding: SRDomainFinding): any { + const url = `${this.reportsUrl}${sectionId}/srfinding/add/`; + return this.http.put(url, finding).pipe( + tap(_ => this.log(`addFinding`)), + catchError(this.handleError('addFinding')) + ); + } + /** Log a DocumentService message with the MessageService */ private log(message: string) { this.messageService.add(`DocumentService: ${message}`); diff --git a/src/app/srdomaintemplate-tabulator/srdomaintemplate-tabulator.component.ts b/src/app/srdomaintemplate-tabulator/srdomaintemplate-tabulator.component.ts index 3c79d23ea8d1498184db3c07563f777079f9586c..68e938dbef48d1fe876990db1575e4cb043699bd 100644 --- a/src/app/srdomaintemplate-tabulator/srdomaintemplate-tabulator.component.ts +++ b/src/app/srdomaintemplate-tabulator/srdomaintemplate-tabulator.component.ts @@ -16,7 +16,8 @@ import { Section } from '../model/section'; }) export class SrdomaintemplateTabulatorComponent implements OnInit { - currentSection: string; + currentSection: Section; + sections: Section[]; tableData: any[] = []; table: Tabulator; originalData: any[] = []; @@ -66,15 +67,17 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { } loadData(parentComponent, update) { - this.currentSection = parentComponent.currentSection && parentComponent.currentSection.name; + this.currentSection = parentComponent.currentSection; this.report = parentComponent.report; this.tableData = parentComponent.tableDataSRDomainTemplate; this.originalData = cloneDeep(parentComponent.tableDataSRDomainTemplate); + this.sections = parentComponent.sections; if (update) { this.table.setData(this.tableData); + this.enableAddFindingEvent.emit(true); } else { this.drawTable(this); - } + } } editCheck(cell) { @@ -86,7 +89,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { } paramLookupGeneric(cell) { - var v = [] + var values = [] var field = cell.getColumn().getField(); var rowNum = cell.getRow().getData().findingId; var originalValue = rowNum < this.originalData.length ? this.originalData[rowNum - 1][field] : null; @@ -105,13 +108,19 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { codeLists = this.cdiscSendCTService.finding_list; } else if (field == "srobsv") { // manifestation constantValues = this.cdiscSendCTService.manifestation_finding_list; + } else if (field == "section") { + values = this.report.sections.map(section => section.name); + } + + if (values[0] != undefined && values.includes(originalValue)) { + originalIsCodedValue = true; } if (codeLists != undefined && codeLists[0] != undefined) { codeLists.forEach(codeList => { codeList.codedValues.forEach(codedValue => { originalIsCodedValue = originalValue == codedValue.preferredTerm; - v.push({ + values.push({ label: codedValue.preferredTerm, value: codedValue.preferredTerm, name: codedValue.name, @@ -124,7 +133,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { if (constantValues[0] != undefined) { constantValues.forEach(value => { originalIsCodedValue = originalValue == value; - v.push({ + values.push({ label: value, value: value, name: value, @@ -133,7 +142,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { }) } - if (originalValue != null && originalValue != undefined && !originalIsCodedValue) v.push({ + if (originalValue != null && originalValue != undefined && !originalIsCodedValue) values.push({ label: originalValue, value: originalValue, name: originalValue, @@ -143,7 +152,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { return { autocomplete: true, freetext: true, - values: v, + values: values, sort: "asc", listOnEmpty: true, itemFormatter: function (label, value, item, element) { @@ -158,24 +167,10 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { } } - paramLookupStudyDomain(cell) { - return this.paramLookupGeneric(cell); - } - - paramLookupManifestation(cell) { - return this.paramLookupGeneric(cell); - } - - paramLookupStudyTest(cell) { - return this.paramLookupGeneric(cell); - } - - paramLookupSpecies(cell) { - return this.paramLookupGeneric(cell); - } - - paramLookupFinding(cell) { - return this.paramLookupGeneric(cell); + onSectionChange(cell) { + const cellData = cell.getRow().getData(); + const selectedSection = this.sections.find(section => section.name == cellData.section); + cellData.sectionId = selectedSection.id; } onStudyDomainChange(cell) { @@ -191,14 +186,16 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { newFinding.studyid = this.report.id + "_" + this.report.fileName; newFinding.srDomainId = findingId; newFinding.findingId = findingId; - newFinding.status = Status.ADDED; - newFinding.section = this.currentSection; + newFinding.status = Status.NEW; + newFinding.section = this.currentSection && this.currentSection.name; + newFinding.sectionId = this.currentSection && this.currentSection.id; this.tableData.push(newFinding); this.table.addRow(newFinding); } private drawTable(pretoxSRDomainTemplateTab): void { + const newStatus = Status.NEW; const addedStatus = Status.ADDED; const acceptedStatus = Status.ACCEPTED; const rejectedStatus = Status.REJECTED @@ -215,7 +212,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { title: '', width: 5, hozAlign: 'center', headerSort: false, cssClass: "tabulator-cell non-editable-cell", cellClick: function (e, cell) { var data = cell.getRow().getData(); - if (data.status != addedStatus) { + if (data.status != addedStatus || data.status != newStatus) { if (data.status == acceptedStatus) { data.status = rejectedStatus; cell.getElement().innerHTML = '
'; @@ -232,7 +229,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { }, formatter: function (cell, formatterParams, onRendered) { var data = cell.getRow().getData(); - if (data.status == addedStatus) { + if (data.status == addedStatus || data.status == newStatus) { return '
'; } else if (data.status == acceptedStatus) { return '
'; @@ -247,7 +244,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { title: '', width: 5, hozAlign: 'center', headerSort: false, cssClass: "tabulator-cell non-editable-cell", cellClick: function (e, cell) { var data = cell.getRow().getData(); - if (data.status != addedStatus) { + if (data.status != addedStatus || data.status != newStatus) { if (data.export == undefined || data.export == true) { data.export = false; cell.getElement().innerHTML = '
'; @@ -261,7 +258,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { }, formatter: function (cell, formatterParams, onRendered) { var data = cell.getRow().getData(); - if (data.status == addedStatus) { + if (data.status == addedStatus || data.status == newStatus) { return '
'; } @@ -275,17 +272,18 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { { title: '', width: 5, hozAlign: 'center', headerSort: false, cssClass: "tabulator-cell non-editable-cell", cellClick: function (e, cell) { - if (cell.getRow().getData().status != addedStatus && cell.getRow().getData().selected != true) { - cell.getRow().getData().selected = true; + const cellData = cell.getRow().getData(); + if (cellData.status != addedStatus && cellData.status != newStatus && cellData.selected != true) { + cellData.selected = true; cell.getRow().getElement().className = "tabulator-row evidence-selected"; pretoxSRDomainTemplateTab.rowClickEventSRDomainTemplateEvidence.emit(cell.getData()); } else { - cell.getRow().getData().selected = false; + cellData.selected = false; cell.getRow().getElement().className = "tabulator-row"; } }, formatter: function (cell, formatterParams, onRendered) { - if (cell.getRow().getData().status == addedStatus) { + if (cell.getRow().getData().status == addedStatus || cell.getRow().getData().status == newStatus) { return '
'; } @@ -331,7 +329,7 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { cellClick: function (e, cell) { var row = cell.getRow(); var data = cell.getRow().getData(); - if (data.inEdition == true) { + if (data.inEdition == true && data.sectionId != undefined) { data.inEdition = false; pretoxSRDomainTemplateTab.report.findingInEdition = -1; pretoxSRDomainTemplateTab.enableAddFindingEvent.emit(true); @@ -352,42 +350,43 @@ export class SrdomaintemplateTabulatorComponent implements OnInit { title: '', width: 5, field: 'srDomainId', cssClass: "tabulator-cell non-editable-cell", }, { - title: 'Section', field: 'section', cssClass: "tabulator-cell non-editable-cell", + title: 'Section', field: 'section', cssClass: "tabulator-cell non-editable-cell", editor: 'list', editable: this.editCheck.bind(this), + editorParams: this.paramLookupGeneric.bind(this), sorter: "string", cellEdited: this.onSectionChange.bind(this) }, { - title: 'Finding', field: 'srfndg', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editor: 'list', editable: this.editCheck.bind(this), - editorParams: this.paramLookupFinding.bind(this), sorter: "string", formatter: this.ellipsisFormatter + title: 'Finding', field: 'srfndg', cssClass: "tabulator-cell non-editable-cell", editor: 'list', editable: this.editCheck.bind(this), + editorParams: this.paramLookupGeneric.bind(this), sorter: "string", formatter: this.ellipsisFormatter }, { - title: 'Test Name', field: 'srtstcd', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editor: 'list', editable: this.editCheck.bind(this), - editorParams: this.paramLookupStudyTest.bind(this), sorter: "string", formatter: this.ellipsisFormatter + title: 'Test Name', field: 'srtstcd', cssClass: "tabulator-cell non-editable-cell", editor: 'list', editable: this.editCheck.bind(this), + editorParams: this.paramLookupGeneric.bind(this), sorter: "string", formatter: this.ellipsisFormatter }, { - title: 'Manifestation', field: 'srobsv', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editable: this.editCheck.bind(this), editor: 'list', - editorParams: this.paramLookupManifestation.bind(this) + title: 'Manifestation', field: 'srobsv', cssClass: "tabulator-cell non-editable-cell", editable: this.editCheck.bind(this), editor: 'list', + editorParams: this.paramLookupGeneric.bind(this) }, { - title: 'Domain', field: 'srdomain', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editor: 'list', editable: this.editCheck.bind(this), - editorParams: this.paramLookupStudyDomain.bind(this), sorter: "string", formatter: this.ellipsisFormatter, + title: 'Domain', field: 'srdomain', cssClass: "tabulator-cell non-editable-cell", editor: 'list', editable: this.editCheck.bind(this), + editorParams: this.paramLookupGeneric.bind(this), sorter: "string", formatter: this.ellipsisFormatter, cellEdited: this.onStudyDomainChange.bind(this) }, { - title: 'Specimen', field: 'srspec', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editor: 'list', editable: this.editCheck.bind(this), - editorParams: this.paramLookupSpecies.bind(this), sorter: "string", formatter: this.ellipsisFormatter + title: 'Specimen', field: 'srspec', cssClass: "tabulator-cell non-editable-cell", editor: 'list', editable: this.editCheck.bind(this), + editorParams: this.paramLookupGeneric.bind(this), sorter: "string", formatter: this.ellipsisFormatter }, { - title: 'Sex', field: 'srsex', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editor: 'list', editable: this.editCheck.bind(this), editorParams: { + title: 'Sex', field: 'srsex', cssClass: "tabulator-cell non-editable-cell", editor: 'list', editable: this.editCheck.bind(this), editorParams: { values: ['Female', 'Male', 'Both'] } }, { - title: 'Dose', field: 'srgrpdos', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editor: 'input', editable: this.editCheck.bind(this) + title: 'Dose', field: 'srgrpdos', cssClass: "tabulator-cell non-editable-cell", editor: 'input', editable: this.editCheck.bind(this) }, { - title: 'Group', field: 'spgrpcd', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editor: 'input', editable: this.editCheck.bind(this), + title: 'Group', field: 'spgrpcd', cssClass: "tabulator-cell non-editable-cell", editor: 'input', editable: this.editCheck.bind(this), }, { - title: 'Treatment Related?', field: 'srtrtef', cssClass: "tabulator-cell non-editable-cell", headerSort: true, editor: 'list', editable: this.editCheck.bind(this), editorParams: { + title: 'Treatment Related?', field: 'srtrtef', cssClass: "tabulator-cell non-editable-cell", editor: 'list', editable: this.editCheck.bind(this), editorParams: { values: ['Yes', 'No', 'Uncertain'] } },