Skip to content

Commit

Permalink
Add tslint, fix lint errors, add lint to precommit
Browse files Browse the repository at this point in the history
Add palantir's default tslint-react config. Add lint checkint to precommit
hook.
  • Loading branch information
inodb committed Oct 21, 2016
1 parent 52a0dd6 commit 4095866
Show file tree
Hide file tree
Showing 10 changed files with 243 additions and 208 deletions.
115 changes: 57 additions & 58 deletions dist/reactapp/js/1.chunk.js

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"build:size": "npm run clean && webpack --define process.env.NODE_ENV='\"production\"' --json > stats.json",
"test": "karma start karma.conf.js",
"test:watch": "npm run test -- --watch",
"lint": "eslint src/** --ext .js --ext .jsx --cache",
"lint": "tslint $(find . -name '*.tsx')",
"eslint": "eslint src/** --ext .js --ext .jsx --cache",
"storedist": "npm run build && git add -f dist",
"comparedist": "bash ./scripts/test_compare_dist_with_committed_dist.sh",
"syncmock": "node src/test/fetchMockData.js --diff",
Expand Down Expand Up @@ -117,12 +118,15 @@
"sinon": "^1.17.4",
"source-map-loader": "^0.1.5",
"ts-loader": "^0.8.2",
"tslint": "^3.15.1",
"tslint-react": "^1.0.0",
"typescript": "^2.0.3",
"webpack-dev-server": "^1.15.0",
"webpack-fail-plugin": "^1.0.5",
"yargs": "^4.8.0"
},
"pre-commit": [
"lint",
"storedist",
"comparedist"
]
Expand Down
26 changes: 10 additions & 16 deletions src/pages/home/HomePage.tsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
import * as React from "react";
import * as React from 'react';

interface HomePageProps
{
interface IHomePageProps {
}

interface HomePageState
{
interface IHomePageState {
}

export default class HomePage extends React.Component<HomePageProps, HomePageState>
{
render()
{
let x = 3;
x += 4;
console.log(x);
x += 4;
console.log(x);
return <div>Hello TypeScript1</div>;
}
export default class HomePage extends React.Component<IHomePageProps, IHomePageState> {
public render() {
let x = 3;
x += 4;
x += 4;
return <div>Hello TypeScript1</div>;
}
};
33 changes: 14 additions & 19 deletions src/pages/patientView/PatientViewPage.tsx
Original file line number Diff line number Diff line change
@@ -1,46 +1,41 @@
import * as Immutable from 'immutable';
import OrderedMap = Immutable.OrderedMap;
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import {Button, Overlay, Tooltip, Popover} from 'react-bootstrap';
import { connect } from 'react-redux';

import ClinicalInformationContainer from './clinicalInformation/ClinicalInformationContainer';
import PatientHeaderUnconnected from './patientHeader/PatientHeader';
import { connect } from 'react-redux';
import * as Immutable from "immutable";
import OrderedMap = Immutable.OrderedMap;
import {PatientHeaderProps} from "./patientHeader/PatientHeader";
import {IPatientHeaderProps} from './patientHeader/PatientHeader';

type TODO = any;

interface PatientViewPageProps
{
interface IPatientViewPageProps {
store?: TODO;
}

export default class PatientViewPage extends React.Component<PatientViewPageProps, {}>
{
static mapStateToProps(state:OrderedMap<string, any>):PatientHeaderProps
{
export default class PatientViewPage extends React.Component<IPatientViewPageProps, {}> {
private static mapStateToProps(state: OrderedMap<string, any>): IPatientHeaderProps {
let ci = state.get('clinicalInformation');
return {
patient: ci.get('patient'),
samples: ci.get('samples'),
status: ci.get('status'),
patient: ci.get('patient'),
};
}

componentDidMount()
{
const PatientHeader:TODO = connect(PatientViewPage.mapStateToProps)(PatientHeaderUnconnected as TODO);
public componentDidMount() {
const PatientHeader: TODO = connect(PatientViewPage.mapStateToProps)(PatientHeaderUnconnected as TODO);

ReactDOM.render(
<PatientHeader store={this.props.store} />,
document.getElementById("clinical_div") as Element
document.getElementById('clinical_div') as Element
);
//ReactDOM.render(<div><Example /><Example /></div>, document.getElementById("clinical_div") as Element);
// ReactDOM.render(<div><Example /><Example /></div>, document.getElementById('clinical_div') as Element);

}

render()
{
public render() {
return (
<ClinicalInformationContainer />
);
Expand Down
32 changes: 12 additions & 20 deletions src/pages/patientView/SampleLabel.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import * as React from 'react';

export default class SampleLabelSVG extends React.Component<SampleLabelSVGProps, {}>
{
constructor(props:SampleLabelSVGProps)
{
export default class SampleLabelSVG extends React.Component<ISampleLabelSVGProps, {}> {
constructor(props: ISampleLabelSVGProps) {
super(props);
this.render = this.render.bind(this);
}

render()
{
public render() {
const { label, color, x, y } = this.props;
return (
<g>
Expand All @@ -20,38 +17,33 @@ export default class SampleLabelSVG extends React.Component<SampleLabelSVGProps,
}
}

export interface SampleLabelSVGProps
{
export interface ISampleLabelSVGProps {
label: string;
color: string;
x: number;
y: number;
}

export class SampleLabelHTML extends React.Component<SampleLabelHTMLProps, {}>
{
constructor(props:SampleLabelHTMLProps)
{
export class SampleLabelHTML extends React.Component<ISampleLabelHTMLProps, {}> {
constructor(props: ISampleLabelHTMLProps) {
super(props);
this.render = this.render.bind(this);
}

render()
{
public render() {
const { label, color } = this.props;
return (
<svg width="12" height="12" className="case-label-header" alt="HCI002T">
<g transform="translate(6,6)">
<circle r="6" fill={color} />
<text y="4" textAnchor="middle" fontSize="10" fill="white">{label}</text>
<svg width='12' height='12' className='case-label-header' alt='HCI002T'>
<g transform='translate(6,6)'>
<circle r='6' fill={color} />
<text y='4' textAnchor='middle' fontSize='10' fill='white'>{label}</text>
</g>
</svg>
);
}
}

interface SampleLabelHTMLProps
{
interface ISampleLabelHTMLProps {
label: string;
color: string;
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
import {List} from "immutable";
import {List} from 'immutable';
import * as React from 'react';
import { Table } from 'react-bootstrap';
import * as Immutable from 'immutable';

type TODO = any;

export interface ClinicalInformationPatientTableProps
{
export interface IClinicalInformationPatientTableProps {
data: List<TODO>;
}

export default class ClinicalInformationPatientTable extends React.Component<ClinicalInformationPatientTableProps, {}>
{
render()
{
const rows:JSX.Element[] = [];
class ClinicalInformationPatientTable extends React.Component<IClinicalInformationPatientTableProps, {}> {
public render() {
const rows: JSX.Element[] = [];

this.props.data.forEach((item) => {
rows.push(
<tr key={item.get('id')}>
Expand Down Expand Up @@ -71,3 +68,5 @@ export default class ClinicalInformationPatientTable extends React.Component<Cli
// );
}
}

export default ClinicalInformationPatientTable;
108 changes: 50 additions & 58 deletions src/pages/patientView/patientHeader/PatientHeader.tsx
Original file line number Diff line number Diff line change
@@ -1,81 +1,73 @@
import {List} from "immutable";
import * as React from 'react';
import {Button, OverlayTrigger, Popover} from 'react-bootstrap';
import SampleInline from './SampleInline';
import TooltipTable from '../clinicalInformation/ClinicalInformationPatientTable';
import {List} from 'immutable';
import * as Immutable from 'immutable';
import * as React from 'react';
import {OverlayTrigger, Popover} from 'react-bootstrap';
import Spinner from 'react-spinkit';
import OrderedMap = Immutable.OrderedMap;

import TooltipTable from '../clinicalInformation/ClinicalInformationPatientTable';
import SampleInline from './SampleInline';

type TODO = any;

type Sample = {clinicalData:TODO};
type Sample = {clinicalData: TODO};

export interface PatientHeaderProps
{
samples:List<Sample>;
status:'fetching'|'complete'|'error';
patient:TODO;
export interface IPatientHeaderProps {
samples: List<Sample>;
status: 'fetching'|'complete'|'error';
patient: TODO;
}

export default class PatientHeader extends React.Component<PatientHeaderProps, {}>
{
getPopover(sample:Sample, number:number)
{
export default class PatientHeader extends React.Component<IPatientHeaderProps, {}> {
public render() {
switch (this.props.status) {
case 'fetching':
return <div><Spinner spinnerName='three-bounce' /></div>;

case 'complete':
return this.drawHeader();

case 'error':
return <div>There was an error.</div>;

default:
return <div />;
}
}

private getPopover(sample: Sample, sampleNumber: number) {
return (
<Popover key={number} id={'popover-sample-' + number}>
<Popover key={sampleNumber} id={'popover-sample-' + sampleNumber}>
<TooltipTable data={Immutable.fromJS(sample.clinicalData)} />
</Popover>
);
}

drawHeader()
{
if (this.props.samples && this.props.samples.size > 0)
{
private getOverlayTrigger(sample: Sample, sampleNumber: number) {
return (
<OverlayTrigger
delayHide={100}
key={sampleNumber}
trigger={['hover', 'focus']}
placement='bottom'
overlay={this.getPopover(sample, sampleNumber + 1)}
>
<span>
<SampleInline sample={sample} sampleNumber={sampleNumber + 1} />
</span>
</OverlayTrigger>
);
}

private drawHeader() {
if (this.props.samples && this.props.samples.size > 0) {
return (
<div>
{this.props.samples.map((sample:Sample, number:number) => {
//let clinicalData = this.props.samples.get('items').keys().map(attr_id => {
// return Object({'id': x,
// 'value': this.props.samples.get('items').get(attr_id).get('TCGA-P6-A5OH-01')
// })
//}).filter(x => x.value);
console.log(sample);

return (
<OverlayTrigger delayHide={100} key={number} trigger={['hover', 'focus']} placement="bottom"
overlay={this.getPopover(sample, number+1)}>
<span>
<SampleInline sample={sample} number={number+1} />
</span>
</OverlayTrigger>
);
})}
{this.props.samples.map((sample:Sample, sampleNumber: number) => this.getOverlayTrigger)}
</div>
);
}
else
{
else {
return <div>There was an error.</div>;
}
}

render()
{
switch (this.props.status)
{
case 'fetching':
return <div><Spinner spinnerName="three-bounce" /></div>;

case 'complete':
return this.drawHeader();

case 'error':
return <div>There was an error.</div>;

default:
return <div />;
}
}
}
20 changes: 9 additions & 11 deletions src/pages/patientView/patientHeader/SampleInline.tsx
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
import * as React from 'react';
import {Button, OverlayTrigger, Popover} from 'react-bootstrap';

import { SampleLabelHTML } from '../SampleLabel';

type TODO = any;

interface SampleInlineProps
{
interface ISampleInlineProps {
sample: TODO;
number: number;
sampleNumber: number;
}

export default class SampleInline extends React.Component<SampleInlineProps, {}>
{
render()
{
const { sample, number } = this.props;
export default class SampleInline extends React.Component<ISampleInlineProps, {}> {
public render() {
const { sample, sampleNumber } = this.props;

return (
<span style={{"paddingRight":"10px"}}>
<SampleLabelHTML color={'black'} label={(number).toString()} />
<span style={{paddingRight: '10px'}}>
<SampleLabelHTML color={'black'} label={(sampleNumber).toString()} />
{' ' + sample.id}
</span>
);
Expand Down
Loading

0 comments on commit 4095866

Please sign in to comment.