(props: Props)
| 100 | } |
| 101 | |
| 102 | export function DataItem(props: Props) { |
| 103 | if (!props.item) { |
| 104 | return null; |
| 105 | } |
| 106 | const nameValuePairs: NameValuePair[] = []; |
| 107 | for (const columnName in props.item) { |
| 108 | if (columnName === SandDance.constants.GL_ORDINAL && !props.showSystemFields) { |
| 109 | continue; |
| 110 | } |
| 111 | if (SandDance.util.isInternalFieldName(columnName)) { |
| 112 | continue; |
| 113 | } |
| 114 | const nameValuePair: NameValuePair = { |
| 115 | columnName, |
| 116 | value: props.item[columnName], |
| 117 | }; |
| 118 | if (!props.bingSearchDisabled) { |
| 119 | nameValuePair.bingSearch = bingSearchLink(props.columns.filter(c => c.name === columnName)[0], props.item[columnName]); |
| 120 | } |
| 121 | nameValuePairs.push(nameValuePair); |
| 122 | } |
| 123 | return ( |
| 124 | <div className="sanddance-dataItem"> |
| 125 | {nameValuePairs.map((nameValuePair, i) => { |
| 126 | const ex: InputSearchExpression = { |
| 127 | key: 0, |
| 128 | name: nameValuePair.columnName, |
| 129 | operator: '==', |
| 130 | value: nameValuePair.value, |
| 131 | }; |
| 132 | if (nameValuePair.value === null || nameValuePair.value === '') { |
| 133 | ex.operator = 'isnullorEmpty'; |
| 134 | delete ex.value; |
| 135 | } |
| 136 | const searchClick = (e: React.MouseEvent<HTMLTableDataCellElement>) => { |
| 137 | const search: InputSearchExpressionGroup = { |
| 138 | key: 0, |
| 139 | expressions: [ex], |
| 140 | }; |
| 141 | props.onSearch(e, [search]); |
| 142 | }; |
| 143 | const title = strings.tooltipSearch(nameValuePair.columnName, displayValue(nameValuePair.value).display); |
| 144 | return ( |
| 145 | <div |
| 146 | key={i} |
| 147 | onClick={!props.disabled ? searchClick : null} |
| 148 | title={title} |
| 149 | onKeyUp={e => { |
| 150 | if (e.keyCode === KeyCodes.ENTER) { |
| 151 | searchClick(e as any); |
| 152 | } |
| 153 | }} |
| 154 | tabIndex={0} |
| 155 | className="name-value" |
| 156 | > |
| 157 | <div className="column-name">{nameValuePair.columnName}</div> |
| 158 | <div className="column-value">{displayValueElement(nameValuePair)}</div> |
| 159 | {nameValuePair.bingSearch} |
nothing calls this directly
no test coverage detected