@jbrowse/plugin-spreadsheet-view 2.6.1 → 2.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/dist/LaunchSpreadsheetView/index.js +0 -1
  2. package/dist/SpreadsheetView/components/CellData.js +0 -1
  3. package/dist/SpreadsheetView/components/ColumnFilterControls.js +0 -1
  4. package/dist/SpreadsheetView/components/ColumnMenu.js +0 -1
  5. package/dist/SpreadsheetView/components/DataRow.js +0 -1
  6. package/dist/SpreadsheetView/components/DataTable.js +0 -1
  7. package/dist/SpreadsheetView/components/DataTableHeader.js +0 -1
  8. package/dist/SpreadsheetView/components/GlobalFilterControls.js +0 -1
  9. package/dist/SpreadsheetView/components/ImportWizard.js +0 -1
  10. package/dist/SpreadsheetView/components/NumberEditor.js +0 -1
  11. package/dist/SpreadsheetView/components/RowCountMessage.js +0 -1
  12. package/dist/SpreadsheetView/components/RowMenu.js +0 -1
  13. package/dist/SpreadsheetView/components/SortIndicator.js +0 -1
  14. package/dist/SpreadsheetView/components/Spreadsheet.js +0 -1
  15. package/dist/SpreadsheetView/components/SpreadsheetView.js +0 -1
  16. package/dist/SpreadsheetView/components/StatusBar.js +0 -1
  17. package/dist/SpreadsheetView/components/util.js +0 -1
  18. package/dist/SpreadsheetView/importAdapters/BedImport.js +0 -1
  19. package/dist/SpreadsheetView/importAdapters/ImportUtils.js +0 -1
  20. package/dist/SpreadsheetView/importAdapters/STARFusionImport.js +0 -1
  21. package/dist/SpreadsheetView/importAdapters/VcfImport.js +0 -1
  22. package/dist/SpreadsheetView/index.js +0 -1
  23. package/dist/SpreadsheetView/models/ColumnDataTypes/LocEnd.js +0 -1
  24. package/dist/SpreadsheetView/models/ColumnDataTypes/LocRef.js +0 -1
  25. package/dist/SpreadsheetView/models/ColumnDataTypes/LocStart.js +0 -1
  26. package/dist/SpreadsheetView/models/ColumnDataTypes/LocString.js +0 -1
  27. package/dist/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.js +0 -1
  28. package/dist/SpreadsheetView/models/ColumnDataTypes/Number.js +0 -1
  29. package/dist/SpreadsheetView/models/ColumnDataTypes/Text.js +0 -1
  30. package/dist/SpreadsheetView/models/ColumnDataTypes/index.js +0 -1
  31. package/dist/SpreadsheetView/models/FilterControls.js +0 -1
  32. package/dist/SpreadsheetView/models/ImportWizard.js +0 -1
  33. package/dist/SpreadsheetView/models/Row.js +0 -1
  34. package/dist/SpreadsheetView/models/Spreadsheet.js +0 -1
  35. package/dist/SpreadsheetView/models/SpreadsheetView.js +0 -1
  36. package/dist/SpreadsheetView/models/StaticRowSet.js +0 -1
  37. package/dist/index.js +0 -1
  38. package/esm/LaunchSpreadsheetView/index.js +0 -1
  39. package/esm/SpreadsheetView/components/CellData.js +0 -1
  40. package/esm/SpreadsheetView/components/ColumnFilterControls.js +0 -1
  41. package/esm/SpreadsheetView/components/ColumnMenu.js +0 -1
  42. package/esm/SpreadsheetView/components/DataRow.js +0 -1
  43. package/esm/SpreadsheetView/components/DataTable.js +0 -1
  44. package/esm/SpreadsheetView/components/DataTableHeader.js +0 -1
  45. package/esm/SpreadsheetView/components/GlobalFilterControls.js +0 -1
  46. package/esm/SpreadsheetView/components/ImportWizard.js +0 -1
  47. package/esm/SpreadsheetView/components/NumberEditor.js +0 -1
  48. package/esm/SpreadsheetView/components/RowCountMessage.js +0 -1
  49. package/esm/SpreadsheetView/components/RowMenu.js +0 -1
  50. package/esm/SpreadsheetView/components/SortIndicator.js +0 -1
  51. package/esm/SpreadsheetView/components/Spreadsheet.js +0 -1
  52. package/esm/SpreadsheetView/components/SpreadsheetView.js +0 -1
  53. package/esm/SpreadsheetView/components/StatusBar.js +0 -1
  54. package/esm/SpreadsheetView/components/util.js +0 -1
  55. package/esm/SpreadsheetView/importAdapters/BedImport.js +0 -1
  56. package/esm/SpreadsheetView/importAdapters/ImportUtils.js +0 -1
  57. package/esm/SpreadsheetView/importAdapters/STARFusionImport.js +0 -1
  58. package/esm/SpreadsheetView/importAdapters/VcfImport.js +0 -1
  59. package/esm/SpreadsheetView/index.js +0 -1
  60. package/esm/SpreadsheetView/models/ColumnDataTypes/LocEnd.js +0 -1
  61. package/esm/SpreadsheetView/models/ColumnDataTypes/LocRef.js +0 -1
  62. package/esm/SpreadsheetView/models/ColumnDataTypes/LocStart.js +0 -1
  63. package/esm/SpreadsheetView/models/ColumnDataTypes/LocString.js +0 -1
  64. package/esm/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.js +0 -1
  65. package/esm/SpreadsheetView/models/ColumnDataTypes/Number.js +0 -1
  66. package/esm/SpreadsheetView/models/ColumnDataTypes/Text.js +0 -1
  67. package/esm/SpreadsheetView/models/ColumnDataTypes/index.js +0 -1
  68. package/esm/SpreadsheetView/models/FilterControls.js +0 -1
  69. package/esm/SpreadsheetView/models/ImportWizard.js +0 -1
  70. package/esm/SpreadsheetView/models/Row.js +0 -1
  71. package/esm/SpreadsheetView/models/Spreadsheet.js +0 -1
  72. package/esm/SpreadsheetView/models/SpreadsheetView.js +0 -1
  73. package/esm/SpreadsheetView/models/StaticRowSet.js +0 -1
  74. package/esm/index.js +0 -1
  75. package/package.json +4 -5
  76. package/dist/LaunchSpreadsheetView/index.js.map +0 -1
  77. package/dist/SpreadsheetView/components/CellData.js.map +0 -1
  78. package/dist/SpreadsheetView/components/ColumnFilterControls.js.map +0 -1
  79. package/dist/SpreadsheetView/components/ColumnMenu.js.map +0 -1
  80. package/dist/SpreadsheetView/components/DataRow.js.map +0 -1
  81. package/dist/SpreadsheetView/components/DataTable.js.map +0 -1
  82. package/dist/SpreadsheetView/components/DataTableHeader.js.map +0 -1
  83. package/dist/SpreadsheetView/components/GlobalFilterControls.js.map +0 -1
  84. package/dist/SpreadsheetView/components/ImportWizard.js.map +0 -1
  85. package/dist/SpreadsheetView/components/NumberEditor.js.map +0 -1
  86. package/dist/SpreadsheetView/components/RowCountMessage.js.map +0 -1
  87. package/dist/SpreadsheetView/components/RowMenu.js.map +0 -1
  88. package/dist/SpreadsheetView/components/SortIndicator.js.map +0 -1
  89. package/dist/SpreadsheetView/components/Spreadsheet.js.map +0 -1
  90. package/dist/SpreadsheetView/components/SpreadsheetView.js.map +0 -1
  91. package/dist/SpreadsheetView/components/StatusBar.js.map +0 -1
  92. package/dist/SpreadsheetView/components/util.js.map +0 -1
  93. package/dist/SpreadsheetView/importAdapters/BedImport.js.map +0 -1
  94. package/dist/SpreadsheetView/importAdapters/ImportUtils.js.map +0 -1
  95. package/dist/SpreadsheetView/importAdapters/STARFusionImport.js.map +0 -1
  96. package/dist/SpreadsheetView/importAdapters/VcfImport.js.map +0 -1
  97. package/dist/SpreadsheetView/index.js.map +0 -1
  98. package/dist/SpreadsheetView/models/ColumnDataTypes/LocEnd.js.map +0 -1
  99. package/dist/SpreadsheetView/models/ColumnDataTypes/LocRef.js.map +0 -1
  100. package/dist/SpreadsheetView/models/ColumnDataTypes/LocStart.js.map +0 -1
  101. package/dist/SpreadsheetView/models/ColumnDataTypes/LocString.js.map +0 -1
  102. package/dist/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.js.map +0 -1
  103. package/dist/SpreadsheetView/models/ColumnDataTypes/Number.js.map +0 -1
  104. package/dist/SpreadsheetView/models/ColumnDataTypes/Text.js.map +0 -1
  105. package/dist/SpreadsheetView/models/ColumnDataTypes/index.js.map +0 -1
  106. package/dist/SpreadsheetView/models/FilterControls.js.map +0 -1
  107. package/dist/SpreadsheetView/models/ImportWizard.js.map +0 -1
  108. package/dist/SpreadsheetView/models/Row.js.map +0 -1
  109. package/dist/SpreadsheetView/models/Spreadsheet.js.map +0 -1
  110. package/dist/SpreadsheetView/models/SpreadsheetView.js.map +0 -1
  111. package/dist/SpreadsheetView/models/StaticRowSet.js.map +0 -1
  112. package/dist/index.js.map +0 -1
  113. package/esm/LaunchSpreadsheetView/index.js.map +0 -1
  114. package/esm/SpreadsheetView/components/CellData.js.map +0 -1
  115. package/esm/SpreadsheetView/components/ColumnFilterControls.js.map +0 -1
  116. package/esm/SpreadsheetView/components/ColumnMenu.js.map +0 -1
  117. package/esm/SpreadsheetView/components/DataRow.js.map +0 -1
  118. package/esm/SpreadsheetView/components/DataTable.js.map +0 -1
  119. package/esm/SpreadsheetView/components/DataTableHeader.js.map +0 -1
  120. package/esm/SpreadsheetView/components/GlobalFilterControls.js.map +0 -1
  121. package/esm/SpreadsheetView/components/ImportWizard.js.map +0 -1
  122. package/esm/SpreadsheetView/components/NumberEditor.js.map +0 -1
  123. package/esm/SpreadsheetView/components/RowCountMessage.js.map +0 -1
  124. package/esm/SpreadsheetView/components/RowMenu.js.map +0 -1
  125. package/esm/SpreadsheetView/components/SortIndicator.js.map +0 -1
  126. package/esm/SpreadsheetView/components/Spreadsheet.js.map +0 -1
  127. package/esm/SpreadsheetView/components/SpreadsheetView.js.map +0 -1
  128. package/esm/SpreadsheetView/components/StatusBar.js.map +0 -1
  129. package/esm/SpreadsheetView/components/util.js.map +0 -1
  130. package/esm/SpreadsheetView/importAdapters/BedImport.js.map +0 -1
  131. package/esm/SpreadsheetView/importAdapters/ImportUtils.js.map +0 -1
  132. package/esm/SpreadsheetView/importAdapters/STARFusionImport.js.map +0 -1
  133. package/esm/SpreadsheetView/importAdapters/VcfImport.js.map +0 -1
  134. package/esm/SpreadsheetView/index.js.map +0 -1
  135. package/esm/SpreadsheetView/models/ColumnDataTypes/LocEnd.js.map +0 -1
  136. package/esm/SpreadsheetView/models/ColumnDataTypes/LocRef.js.map +0 -1
  137. package/esm/SpreadsheetView/models/ColumnDataTypes/LocStart.js.map +0 -1
  138. package/esm/SpreadsheetView/models/ColumnDataTypes/LocString.js.map +0 -1
  139. package/esm/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.js.map +0 -1
  140. package/esm/SpreadsheetView/models/ColumnDataTypes/Number.js.map +0 -1
  141. package/esm/SpreadsheetView/models/ColumnDataTypes/Text.js.map +0 -1
  142. package/esm/SpreadsheetView/models/ColumnDataTypes/index.js.map +0 -1
  143. package/esm/SpreadsheetView/models/FilterControls.js.map +0 -1
  144. package/esm/SpreadsheetView/models/ImportWizard.js.map +0 -1
  145. package/esm/SpreadsheetView/models/Row.js.map +0 -1
  146. package/esm/SpreadsheetView/models/Spreadsheet.js.map +0 -1
  147. package/esm/SpreadsheetView/models/SpreadsheetView.js.map +0 -1
  148. package/esm/SpreadsheetView/models/StaticRowSet.js.map +0 -1
  149. package/esm/index.js.map +0 -1
  150. package/src/LaunchSpreadsheetView/index.ts +0 -40
  151. package/src/SpreadsheetView/components/CellData.tsx +0 -35
  152. package/src/SpreadsheetView/components/ColumnFilterControls.tsx +0 -84
  153. package/src/SpreadsheetView/components/ColumnMenu.tsx +0 -166
  154. package/src/SpreadsheetView/components/DataRow.tsx +0 -126
  155. package/src/SpreadsheetView/components/DataTable.tsx +0 -91
  156. package/src/SpreadsheetView/components/DataTableHeader.tsx +0 -122
  157. package/src/SpreadsheetView/components/GlobalFilterControls.tsx +0 -70
  158. package/src/SpreadsheetView/components/ImportWizard.tsx +0 -139
  159. package/src/SpreadsheetView/components/NumberEditor.tsx +0 -50
  160. package/src/SpreadsheetView/components/RowCountMessage.tsx +0 -44
  161. package/src/SpreadsheetView/components/RowMenu.tsx +0 -65
  162. package/src/SpreadsheetView/components/SortIndicator.tsx +0 -36
  163. package/src/SpreadsheetView/components/Spreadsheet.test.ts +0 -17
  164. package/src/SpreadsheetView/components/Spreadsheet.tsx +0 -46
  165. package/src/SpreadsheetView/components/SpreadsheetView.tsx +0 -119
  166. package/src/SpreadsheetView/components/StatusBar.tsx +0 -75
  167. package/src/SpreadsheetView/components/util.ts +0 -16
  168. package/src/SpreadsheetView/importAdapters/BedImport.test.ts +0 -14
  169. package/src/SpreadsheetView/importAdapters/BedImport.ts +0 -155
  170. package/src/SpreadsheetView/importAdapters/ImportUtils.test.ts +0 -25
  171. package/src/SpreadsheetView/importAdapters/ImportUtils.ts +0 -152
  172. package/src/SpreadsheetView/importAdapters/STARFusionImport.test.ts +0 -27
  173. package/src/SpreadsheetView/importAdapters/STARFusionImport.ts +0 -74
  174. package/src/SpreadsheetView/importAdapters/VcfImport.test.ts +0 -42
  175. package/src/SpreadsheetView/importAdapters/VcfImport.ts +0 -118
  176. package/src/SpreadsheetView/importAdapters/__snapshots__/ImportUtils.test.ts.snap +0 -6555
  177. package/src/SpreadsheetView/importAdapters/__snapshots__/STARFusionImport.test.ts.snap +0 -2354
  178. package/src/SpreadsheetView/importAdapters/__snapshots__/VcfImport.test.ts.snap +0 -16329
  179. package/src/SpreadsheetView/index.ts +0 -20
  180. package/src/SpreadsheetView/models/ColumnDataTypes/LocEnd.ts +0 -21
  181. package/src/SpreadsheetView/models/ColumnDataTypes/LocRef.ts +0 -21
  182. package/src/SpreadsheetView/models/ColumnDataTypes/LocStart.ts +0 -21
  183. package/src/SpreadsheetView/models/ColumnDataTypes/LocString.tsx +0 -328
  184. package/src/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.tsx +0 -38
  185. package/src/SpreadsheetView/models/ColumnDataTypes/Number.tsx +0 -177
  186. package/src/SpreadsheetView/models/ColumnDataTypes/Text.tsx +0 -173
  187. package/src/SpreadsheetView/models/ColumnDataTypes/index.ts +0 -34
  188. package/src/SpreadsheetView/models/FilterControls.ts +0 -95
  189. package/src/SpreadsheetView/models/ImportWizard.ts +0 -203
  190. package/src/SpreadsheetView/models/Row.ts +0 -46
  191. package/src/SpreadsheetView/models/Spreadsheet.ts +0 -209
  192. package/src/SpreadsheetView/models/SpreadsheetView.test.ts +0 -8
  193. package/src/SpreadsheetView/models/SpreadsheetView.ts +0 -243
  194. package/src/SpreadsheetView/models/StaticRowSet.ts +0 -65
  195. package/src/SpreadsheetView/test_data/1801160099-N32519_26611_S51_56704.hard-filtered.vcf +0 -174
  196. package/src/SpreadsheetView/test_data/breast_cancer.subset.csv +0 -50
  197. package/src/SpreadsheetView/test_data/diabetes_target.csv.gz +0 -0
  198. package/src/SpreadsheetView/test_data/foo.bed +0 -11
  199. package/src/SpreadsheetView/test_data/location_test.csv +0 -3
  200. package/src/SpreadsheetView/test_data/location_test_2.csv +0 -3
  201. package/src/SpreadsheetView/test_data/reads_lr_skbr3.fa_ngmlr-0.2.3_mapped.bam.sniffles1kb_auto_l8_s5_noalt.bedpe +0 -1405
  202. package/src/SpreadsheetView/test_data/starfusion_example.fusion_predictions.tsv +0 -25
  203. package/src/SpreadsheetView/test_data/volvox.sort.bed +0 -109
  204. package/src/index.ts +0 -38
@@ -1,209 +0,0 @@
1
- import { stringToJexlExpression } from '@jbrowse/core/util/jexlStrings'
2
- import { getSession, getEnv } from '@jbrowse/core/util'
3
- import { autorun } from 'mobx'
4
- import {
5
- addDisposer,
6
- types,
7
- getParent,
8
- SnapshotIn,
9
- Instance,
10
- } from 'mobx-state-tree'
11
-
12
- // locals
13
- import { ColumnTypes, AnyColumnType } from './ColumnDataTypes'
14
- import StaticRowSetModel from './StaticRowSet'
15
- import RowModel from './Row'
16
-
17
- type Row = Instance<typeof RowModel>
18
-
19
- const ColumnDefinition = types
20
- .model('ColumnDefinition', {
21
- name: types.maybe(types.string),
22
- dataType: types.optional(AnyColumnType, () => ({
23
- type: 'Text',
24
- })),
25
- // set to true if column is derived from other columns
26
- // if the column is derived, each cell will have a
27
- // `derivationFunction` that is called to get its value
28
- isDerived: false,
29
- // if this cell is derived from other cells, execute this function to get
30
- // the value
31
- derivationFunctionText: types.maybe(types.string),
32
- })
33
- .views(self => ({
34
- get expr() {
35
- if (self.isDerived) {
36
- // compile this as a jexl expression
37
- return stringToJexlExpression(
38
- String(self.derivationFunctionText),
39
- getEnv(self).pluginManager.jexl,
40
- )
41
- }
42
- return undefined
43
- },
44
- }))
45
-
46
- type RowMenuPosition = { anchorEl: Element; rowNumber: string } | null
47
-
48
- /**
49
- * #stateModel SpreadsheetViewSpreadsheet
50
- * #category view
51
- */
52
- function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
53
-
54
- const Spreadsheet = types
55
- .model('Spreadsheet', {
56
- /**
57
- * #property
58
- */
59
- rowSet: types.optional(StaticRowSetModel, () => StaticRowSetModel.create()),
60
- /**
61
- * #property
62
- */
63
- columns: types.array(ColumnDefinition),
64
- /**
65
- * #property
66
- */
67
- columnDisplayOrder: types.array(types.number),
68
- /**
69
- * #property
70
- */
71
- hasColumnNames: false,
72
- /**
73
- * #property
74
- */
75
- sortColumns: types.array(
76
- types
77
- .model('SortColumns', {
78
- columnNumber: types.number,
79
- descending: false,
80
- })
81
- .actions(self => ({
82
- switchDirection() {
83
- self.descending = !self.descending
84
- },
85
- })),
86
- ),
87
-
88
- assemblyName: types.maybe(types.string),
89
- })
90
- .volatile(() => ({
91
- defaultDataType: ColumnTypes.Text,
92
- rowMenuPosition: null as RowMenuPosition,
93
- isLoaded: false,
94
- }))
95
- .views(self => ({
96
- /**
97
- * #getter
98
- */
99
- get initialized() {
100
- const session = getSession(self)
101
- const name = self.assemblyName
102
- return name ? session.assemblyManager.get(name)?.initialized : false
103
- },
104
- /**
105
- * #getter
106
- */
107
- get hideRowSelection() {
108
- // just delegates to parent
109
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
110
- return getParent<any>(self).hideRowSelection
111
- },
112
-
113
- /**
114
- * #getter
115
- * list of data type names to be made available in the column
116
- * dropdown menu
117
- */
118
- get dataTypeChoices() {
119
- const typeNames = Object.keys(ColumnTypes) as (keyof typeof ColumnTypes)[]
120
- return typeNames.map(typeName => {
121
- const dataType = ColumnTypes[typeName].create({ type: typeName })
122
- const { displayName, categoryName } = dataType
123
- return { typeName, displayName, categoryName }
124
- })
125
- },
126
-
127
- /**
128
- * #method
129
- */
130
- rowSortingComparisonFunction(rowA: Row, rowB: Row) {
131
- for (let i = 0; i < self.sortColumns.length; i += 1) {
132
- const { columnNumber, descending } = self.sortColumns[i]
133
- const { dataType } = self.columns[columnNumber]
134
- const result = dataType.compare(
135
- rowA.cellsWithDerived[columnNumber],
136
- rowB.cellsWithDerived[columnNumber],
137
- )
138
- if (result) {
139
- return descending ? -result : result
140
- }
141
- }
142
- return 0
143
- },
144
- }))
145
- .actions(self => ({
146
- afterAttach() {
147
- addDisposer(
148
- self,
149
- autorun(async () => {
150
- const session = getSession(self)
151
- const { assemblyManager } = session
152
- try {
153
- if (self.assemblyName) {
154
- await assemblyManager.waitForAssembly(self.assemblyName)
155
- this.setLoaded(true)
156
- }
157
- } catch (error) {
158
- session.notify(
159
- `failed to load assembly ${self.assemblyName} ${error}`,
160
- 'error',
161
- )
162
- }
163
- }),
164
- )
165
- },
166
-
167
- /**
168
- * #action
169
- */
170
- setLoaded(flag: boolean) {
171
- self.isLoaded = flag
172
- },
173
-
174
- /**
175
- * #action
176
- */
177
- setRowMenuPosition(newPosition: RowMenuPosition) {
178
- self.rowMenuPosition = newPosition
179
- },
180
-
181
- /**
182
- * #action
183
- */
184
- setSortColumns(newSort: NonNullable<SnapshotIn<typeof self.sortColumns>>) {
185
- if (newSort) {
186
- // @ts-expect-error
187
- self.sortColumns = newSort
188
- }
189
- },
190
-
191
- /**
192
- * #action
193
- */
194
- setColumnType(columnNumber: number, newTypeName: string) {
195
- self.columns[columnNumber].dataType = { type: newTypeName }
196
- },
197
-
198
- /**
199
- * #action
200
- */
201
- unselectAll() {
202
- return self.rowSet.unselectAll()
203
- },
204
- }))
205
-
206
- export type SpreadsheetStateModel = typeof Spreadsheet
207
- export type SpreadsheetModel = Instance<SpreadsheetStateModel>
208
-
209
- export default Spreadsheet
@@ -1,8 +0,0 @@
1
- import SpreadsheetView from './SpreadsheetView'
2
-
3
- describe('Spreadsheet View mst model', () => {
4
- it('can instantiate with empty args', () => {
5
- const view = SpreadsheetView.create({ type: 'SpreadsheetView' })
6
- expect(view).toBeTruthy()
7
- })
8
- })
@@ -1,243 +0,0 @@
1
- import {
2
- types,
3
- getParent,
4
- getEnv,
5
- cast,
6
- SnapshotIn,
7
- Instance,
8
- } from 'mobx-state-tree'
9
- import { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models'
10
- import { readConfObject } from '@jbrowse/core/configuration'
11
- import { MenuItem } from '@jbrowse/core/ui'
12
- import { getSession } from '@jbrowse/core/util'
13
-
14
- // icons
15
- import DoneIcon from '@mui/icons-material/Done'
16
- import FolderOpenIcon from '@mui/icons-material/FolderOpen'
17
-
18
- import SpreadsheetModel from './Spreadsheet'
19
- import ImportWizardModel from './ImportWizard'
20
- import FilterControlsModel from './FilterControls'
21
-
22
- type Spreadsheet = Instance<typeof SpreadsheetModel>
23
-
24
- export type MenuItemWithDisabledCallback = MenuItem & {
25
- disabled?:
26
- | boolean
27
- | ((
28
- viewModel: unknown,
29
- spreadsheetModel: Spreadsheet,
30
- rowNumber: number,
31
- row: Spreadsheet['rowSet']['rows'][0],
32
- ) => boolean)
33
- }
34
-
35
- const defaultRowMenuItems: MenuItemWithDisabledCallback[] = [
36
- {
37
- label: 'Toggle select',
38
- icon: DoneIcon,
39
- onClick(_view: unknown, spreadsheet: Spreadsheet) {
40
- const rowNumber = spreadsheet.rowMenuPosition?.rowNumber
41
- if (rowNumber !== undefined) {
42
- spreadsheet.rowSet.rows[+rowNumber - 1].toggleSelect()
43
- }
44
- },
45
- },
46
- ]
47
-
48
- const minHeight = 40
49
- const defaultHeight = 440
50
-
51
- /**
52
- * #stateModel SpreadsheetView
53
- * #category view
54
- */
55
- function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
56
-
57
- const model = types
58
- .model('SpreadsheetView', {
59
- /**
60
- * #property
61
- */
62
- type: types.literal('SpreadsheetView'),
63
- /**
64
- * #property
65
- */
66
- offsetPx: 0,
67
- /**
68
- * #property
69
- */
70
- height: types.optional(
71
- types.refinement(
72
- 'SpreadsheetViewHeight',
73
- types.number,
74
- n => n >= minHeight,
75
- ),
76
- defaultHeight,
77
- ),
78
- /**
79
- * #property
80
- */
81
- hideVerticalResizeHandle: false,
82
- /**
83
- * #property
84
- */
85
- hideFilterControls: false,
86
- /**
87
- * #property
88
- */
89
- filterControls: types.optional(FilterControlsModel, () =>
90
- FilterControlsModel.create({}),
91
- ),
92
- /**
93
- * #property
94
- * switch specifying whether we are showing the import wizard or the
95
- * spreadsheet in our viewing area
96
- */
97
- mode: types.optional(
98
- types.enumeration('SpreadsheetViewMode', ['import', 'display']),
99
- 'import',
100
- ),
101
- /**
102
- * #property
103
- */
104
- importWizard: types.optional(ImportWizardModel, () =>
105
- ImportWizardModel.create(),
106
- ),
107
- /**
108
- * #property
109
- */
110
- spreadsheet: types.maybe(SpreadsheetModel),
111
- })
112
- .volatile(() => ({
113
- width: 400,
114
- rowMenuItems: defaultRowMenuItems,
115
- }))
116
- .views(self => ({
117
- /**
118
- * #getter
119
- */
120
- get readyToDisplay() {
121
- return !!self.spreadsheet && self.spreadsheet.isLoaded
122
- },
123
- /**
124
- * #getter
125
- */
126
- get hideRowSelection() {
127
- return !!getEnv(self).hideRowSelection
128
- },
129
- /**
130
- * #getter
131
- */
132
- get outputRows() {
133
- if (self.spreadsheet && self.spreadsheet.rowSet.isLoaded) {
134
- const selected = self.spreadsheet.rowSet.selectedFilteredRows
135
- if (selected.length) {
136
- return selected
137
- }
138
- return self.spreadsheet.rowSet.sortedFilteredRows
139
- }
140
- return undefined
141
- },
142
- /**
143
- * #getter
144
- */
145
- get assembly() {
146
- const name = self.spreadsheet?.assemblyName
147
- if (name) {
148
- const assemblies = getSession(self).assemblies
149
- return assemblies?.find(asm => readConfObject(asm, 'name') === name)
150
- }
151
- return undefined
152
- },
153
- }))
154
- .actions(self => ({
155
- /**
156
- * #action
157
- */
158
- setRowMenuItems(newItems: MenuItem[]) {
159
- self.rowMenuItems = newItems
160
- },
161
- /**
162
- * #action
163
- */
164
- setWidth(newWidth: number) {
165
- self.width = newWidth
166
- return self.width
167
- },
168
- /**
169
- * #action
170
- */
171
- setHeight(newHeight: number) {
172
- self.height = newHeight > minHeight ? newHeight : minHeight
173
- return self.height
174
- },
175
- /**
176
- * #action
177
- */
178
- resizeHeight(distance: number) {
179
- const oldHeight = self.height
180
- const newHeight = this.setHeight(self.height + distance)
181
- return newHeight - oldHeight
182
- },
183
- /**
184
- * #action
185
- */
186
- resizeWidth(distance: number) {
187
- const oldWidth = self.width
188
- const newWidth = this.setWidth(self.width + distance)
189
- return newWidth - oldWidth
190
- },
191
-
192
- /**
193
- * #action
194
- * load a new spreadsheet and set our mode to display it
195
- */
196
- displaySpreadsheet(spreadsheet: SnapshotIn<typeof SpreadsheetModel>) {
197
- self.filterControls.clearAllFilters()
198
- self.spreadsheet = cast(spreadsheet)
199
- self.mode = 'display'
200
- },
201
- /**
202
- * #action
203
- */
204
- setImportMode() {
205
- self.mode = 'import'
206
- },
207
- /**
208
- * #action
209
- */
210
- setDisplayMode() {
211
- if (self.readyToDisplay) {
212
- self.mode = 'display'
213
- }
214
- },
215
- /**
216
- * #action
217
- */
218
- closeView() {
219
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
220
- getParent<any>(self, 2).removeView(self)
221
- },
222
- }))
223
- .views(self => ({
224
- /**
225
- * #method
226
- */
227
- menuItems() {
228
- return [
229
- {
230
- label: 'Return to import form',
231
- onClick: () => self.setImportMode(),
232
- icon: FolderOpenIcon,
233
- },
234
- ]
235
- },
236
- }))
237
-
238
- const SpreadsheetView = types.compose(BaseViewModel, model)
239
-
240
- export type SpreadsheetViewStateModel = typeof SpreadsheetView
241
- export type SpreadsheetViewModel = Instance<SpreadsheetViewStateModel>
242
-
243
- export default SpreadsheetView
@@ -1,65 +0,0 @@
1
- import RowModel from './Row'
2
- import { types, getParent } from 'mobx-state-tree'
3
-
4
- const StaticRowModel = types
5
- .model('StaticRowSet', {
6
- isLoaded: types.literal(true),
7
- rows: types.array(RowModel),
8
- })
9
- .views(self => ({
10
- get count() {
11
- return self.rows.length
12
- },
13
-
14
- get passingFiltersCount() {
15
- return this.sortedFilteredRows.length
16
- },
17
-
18
- get selectedCount() {
19
- return this.selectedRows.length
20
- },
21
-
22
- get selectedAndPassingFiltersCount() {
23
- return this.selectedFilteredRows.length
24
- },
25
-
26
- get sortedRows() {
27
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
- const parent = getParent<any>(self)
29
- return [...self.rows].sort(parent.rowSortingComparisonFunction)
30
- },
31
-
32
- get selectedRows() {
33
- return self.rows.filter(r => r.isSelected)
34
- },
35
-
36
- get selectedFilteredRows() {
37
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
- const sheet = getParent<any>(self)
39
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
- const view = getParent<any>(sheet)
41
- const { filterControls } = view
42
- return this.selectedRows.filter(row =>
43
- filterControls.rowPassesFilters(sheet, row),
44
- )
45
- },
46
-
47
- // the set of all rows that pass the filters, sorted
48
- get sortedFilteredRows() {
49
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
- const sheet = getParent<any>(self)
51
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
- const view = getParent<any>(sheet)
53
- const { filterControls } = view
54
- return self.rows
55
- .filter(row => filterControls.rowPassesFilters(sheet, row))
56
- .sort(sheet.rowSortingComparisonFunction)
57
- },
58
- }))
59
- .actions(self => ({
60
- unselectAll() {
61
- self.rows.forEach(row => row.unSelect())
62
- },
63
- }))
64
-
65
- export default StaticRowModel