@dataloop-ai/components 0.18.6 → 0.18.8

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 (63) hide show
  1. package/package.json +1 -1
  2. package/src/components/compound/DlCharts/charts/DlConfusionMatrix/DlConfusionMatrix.vue +90 -57
  3. package/src/components/compound/DlCharts/components/DlBrush.vue +24 -4
  4. package/src/components/compound/DlCharts/types/DlConfusionMatrix.types.ts +5 -5
  5. package/src/components/compound/DlCounters/DlCounters.vue +4 -9
  6. package/src/components/compound/DlCounters/types.ts +5 -0
  7. package/src/components/compound/types.ts +2 -0
  8. package/src/components/essential/{DlPageLayout/DlPageLayout.vue → DlLayout/DlLayout.vue} +11 -11
  9. package/src/components/essential/DlLayout/index.ts +2 -0
  10. package/src/components/essential/index.ts +1 -1
  11. package/src/demos/DlConfusionMatrixDemo.vue +93 -51
  12. package/src/demos/DlDatasetBrowserLayoutDemo/DlDatasetBrowserLayoutDemo.vue +85 -0
  13. package/src/demos/DlDatasetBrowserLayoutDemo/index.ts +2 -0
  14. package/src/demos/DlLayoutDemo.vue +25 -0
  15. package/src/demos/DlPageLayoutDemo/DlPageLayoutDemo.vue +81 -0
  16. package/src/demos/DlPageLayoutDemo/index.ts +2 -0
  17. package/src/demos/DlStudioLayoutDemo/DlStudioLayoutDemo.vue +85 -0
  18. package/src/{layouts/DlStudioLayout/components/Demo → demos/DlStudioLayoutDemo/components}/StudioLeftDrawer.vue +2 -2
  19. package/src/{layouts/DlStudioLayout/components/Demo → demos/DlStudioLayoutDemo/components}/StudioTabsMenu.vue +2 -2
  20. package/src/{layouts/DlStudioLayout/components/Demo → demos/DlStudioLayoutDemo/components}/TabMenu/FilterMenu.vue +1 -1
  21. package/src/{layouts/DlStudioLayout/components/Demo → demos/DlStudioLayoutDemo/components}/TabMenu/TabMenuAnnotations.vue +1 -6
  22. package/src/{layouts/DlStudioLayout/components/Demo → demos/DlStudioLayoutDemo/components}/TabMenu/TabMenuItem.vue +1 -1
  23. package/src/demos/DlStudioLayoutDemo/index.ts +2 -0
  24. package/src/demos/index.ts +2 -2
  25. package/src/index.ts +2 -0
  26. package/src/layouts/{DlDatasetBrowser/DlDatasetBrowser.vue → DlDatasetBrowserLayout/DlDatasetBrowserLayout.vue} +6 -6
  27. package/src/layouts/DlDatasetBrowserLayout/index.ts +2 -0
  28. package/src/layouts/DlPageLayout/DlPageLayout.vue +61 -0
  29. package/src/layouts/DlPageLayout/components/DlPageLayoutHeader/DlPageLayoutHeader.vue +76 -0
  30. package/src/layouts/DlPageLayout/components/DlPageLayoutHeader/index.ts +2 -0
  31. package/src/layouts/DlPageLayout/components/index.ts +1 -0
  32. package/src/{components/essential → layouts}/DlPageLayout/index.ts +2 -0
  33. package/src/layouts/DlStudioLayout/DlStudioLayout.vue +6 -9
  34. package/src/layouts/index.ts +3 -0
  35. package/src/demos/DlPageLayoutDemo.vue +0 -146
  36. package/src/layouts/DlStudioLayout/components/Demo/StudioHeader.vue +0 -121
  37. package/src/layouts/DlStudioLayout/components/NavigationDrawer.vue +0 -147
  38. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/DatasetFooter.vue +0 -0
  39. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/DatasetHeader.vue +0 -0
  40. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/DatasetLeftDrawer.vue +0 -0
  41. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/DatasetMainContent.vue +0 -0
  42. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/DatasetRightDrawer.vue +0 -0
  43. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/ActionsMenu.vue +0 -0
  44. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/AutomationMenu.vue +0 -0
  45. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/CardView.vue +0 -0
  46. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/CardViewGallery.vue +0 -0
  47. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/CardViewTable.vue +0 -0
  48. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/EmptyState/LayoutEmptyState.vue +0 -0
  49. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/EmptyState/UploadData.vue +0 -0
  50. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/MainContentImages.vue +0 -0
  51. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/MainContent/MainContentNav.vue +0 -0
  52. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/NavbarKpi.vue +0 -0
  53. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/NavbarSearch.vue +0 -0
  54. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/SearchFilterMenu.vue +0 -0
  55. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/filters/AddFilter.vue +0 -0
  56. /package/src/{layouts/DlDatasetBrowser/DemoComponents → demos/DlDatasetBrowserLayoutDemo/components}/types/imageMetadata.ts +0 -0
  57. /package/src/{layouts/DlStudioLayout → demos/DlStudioLayoutDemo}/components/LayoutNavbar.vue +0 -0
  58. /package/src/{layouts/DlStudioLayout/components/Demo → demos/DlStudioLayoutDemo/components}/LeftMenuContent.vue +0 -0
  59. /package/src/{layouts/DlStudioLayout → demos/DlStudioLayoutDemo}/components/ListAutocomplete.vue +0 -0
  60. /package/src/{layouts/DlStudioLayout/components/Demo → demos/DlStudioLayoutDemo/components}/StudioFooter.vue +0 -0
  61. /package/src/{layouts/DlStudioLayout/components/Demo → demos/DlStudioLayoutDemo/components}/StudioMainContent.vue +0 -0
  62. /package/src/{layouts/DlStudioLayout → demos/DlStudioLayoutDemo}/types/HorizontalItems.ts +0 -0
  63. /package/src/{layouts/DlStudioLayout → demos/DlStudioLayoutDemo}/types/VerticalItems.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dataloop-ai/components",
3
- "version": "0.18.6",
3
+ "version": "0.18.8",
4
4
  "exports": {
5
5
  ".": "./index.ts",
6
6
  "./models": "./models.ts",
@@ -36,11 +36,18 @@
36
36
  <div
37
37
  ref="yAxis"
38
38
  class="y-axis"
39
+ style="min-height: 100%"
39
40
  >
40
41
  <div
41
42
  v-for="(label, index) in labels"
42
43
  :key="index"
43
44
  class="y-axis__element"
45
+ style="
46
+ display: flex;
47
+ flex-grow: 1;
48
+ align-items: center;
49
+ justify-content: center;
50
+ "
44
51
  >
45
52
  <img
46
53
  v-if="labelImages[0]"
@@ -118,43 +125,54 @@
118
125
  class="x-axis"
119
126
  style="margin-top: 10px"
120
127
  >
121
- <span
128
+ <div
122
129
  v-for="(label, index) in visibleLabels"
123
- :ref="`xAxis-${index}`"
124
130
  :key="index"
125
- class="x-axis__element"
126
- :style="`${
127
- !labelImages[0]
128
- ? `transform: rotate(${
129
- rotateXLabels ? '70' : '0'
130
- }deg); line-height: ${
131
- rotateXLabels ? 100 : 10
132
- }px`
133
- : ''
134
- }`"
131
+ style="
132
+ display: flex;
133
+ flex-grow: 100;
134
+ width: 100%;
135
+ justify-content: center;
136
+ "
135
137
  >
136
- <span class="x-axis__element--text">
137
- <img
138
- v-if="labelImages[0]"
139
- class="legend-avatar"
140
- :src="labelImages[index]"
141
- >
142
- <span v-else>
143
- {{ label }}
138
+ <span
139
+ :ref="`xAxis-${index}`"
140
+ class="x-axis__element"
141
+ :style="`
142
+ justify-content: center;
143
+ display: flex;${
144
+ !labelImages[0]
145
+ ? `transform: rotate(${
146
+ rotateXLabels ? '70' : '0'
147
+ }deg); line-height: ${
148
+ rotateXLabels ? 100 : 10
149
+ }px`
150
+ : ''
151
+ };`"
152
+ >
153
+ <span class="x-axis__element--text">
154
+ <img
155
+ v-if="labelImages[0]"
156
+ class="legend-avatar"
157
+ :src="labelImages[index]"
158
+ >
159
+ <span v-else>
160
+ {{ label }}
161
+ </span>
144
162
  </span>
163
+ <dl-tooltip
164
+ self="top middle"
165
+ :offset="debouncedCalculateXAxisElOffset(index)"
166
+ >
167
+ {{ labelStrings[index] }}</dl-tooltip>
145
168
  </span>
146
- <dl-tooltip
147
- self="top middle"
148
- :offset="calculateXAxisElOffset(index)"
149
- >
150
- {{ labelStrings[index] }}</dl-tooltip>
151
- </span>
169
+ </div>
152
170
  </div>
153
171
  <dl-brush
154
172
  track-size="18px"
155
173
  thumb-size="20px"
156
174
  :max="matrix.length"
157
- :max-range="2"
175
+ :min-range="2"
158
176
  :selection-color="getCellBackground(0.1)"
159
177
  :color="getCellBackground()"
160
178
  :step="1"
@@ -190,7 +208,7 @@
190
208
  </template>
191
209
 
192
210
  <script lang="ts">
193
- import { defineComponent, PropType, ref } from 'vue-demi'
211
+ import { defineComponent, getCurrentInstance, PropType, ref } from 'vue-demi'
194
212
  import DlBrush from '../../components/DlBrush.vue'
195
213
  import { DlTooltip } from '../../../../shared'
196
214
  import {
@@ -255,16 +273,8 @@ export default defineComponent({
255
273
  }
256
274
  },
257
275
  setup(props) {
276
+ const vm = getCurrentInstance()
258
277
  const { variables } = useThemeVariables()
259
-
260
- const tooltipState = ref<{
261
- value?: number
262
- xLabel?: string
263
- yLabel?: string
264
- x?: number
265
- y?: number
266
- visible?: boolean
267
- } | null>(null)
268
278
  const currentBrushState = ref<{ min: number; max: number }>({
269
279
  min: 0,
270
280
  max: props.matrix.length
@@ -290,6 +300,22 @@ export default defineComponent({
290
300
  return `var(--dl-color-text${value < 0.5 ? '-darker' : ''}-buttons)`
291
301
  }
292
302
 
303
+ const calculateXAxisElOffset = (index: number): number[] => {
304
+ let el = vm.refs[`xAxis-${index}`] as HTMLElement
305
+ if (!el) return null
306
+ if (Array.isArray(el)) {
307
+ el = el[0]
308
+ }
309
+ const height = el.clientHeight
310
+ const offsetHeight = -1 * (height / 2)
311
+ return [0, offsetHeight]
312
+ }
313
+
314
+ const debouncedCalculateXAxisElOffset = debounce(
315
+ calculateXAxisElOffset,
316
+ 100
317
+ )
318
+
293
319
  return {
294
320
  resizeObserver,
295
321
  variables,
@@ -297,7 +323,9 @@ export default defineComponent({
297
323
  getCellTextColor,
298
324
  cellWidth,
299
325
  currentBrushState,
300
- rotateXLabels
326
+ rotateXLabels,
327
+ calculateXAxisElOffset,
328
+ debouncedCalculateXAxisElOffset
301
329
  }
302
330
  },
303
331
  computed: {
@@ -343,18 +371,14 @@ export default defineComponent({
343
371
  watch: {
344
372
  matrix: {
345
373
  handler(value) {
346
- this.currentBrushState.max = value.length
347
- this.resizeMatrix()
374
+ this.currentBrushState.max = Math.min(10, value.length)
375
+ this.$nextTick(() => {
376
+ this.resizeMatrix()
377
+ })
348
378
  }
349
379
  },
350
380
  currentBrushState() {
351
- const longest = Math.max(
352
- ...this.visibleLabels.map(
353
- (el: DlConfusionMatrixLabel) =>
354
- (isObject(el) ? el.title : `${el}`).length
355
- )
356
- )
357
- this.rotateXLabels = longest * 12 > getCellWidth()
381
+ this.calculateRotatedXLabels()
358
382
  },
359
383
  isEmpty(val) {
360
384
  this.handleResizeObserver({ dispose: !val })
@@ -365,17 +389,25 @@ export default defineComponent({
365
389
  if (this.isEmpty) return
366
390
 
367
391
  this.handleResizeObserver()
392
+ this.$nextTick(() => {
393
+ setTimeout(() => {
394
+ this.calculateRotatedXLabels()
395
+ this.updateBrush(this, this.currentBrushState)
396
+ }, 300)
397
+ })
398
+ },
399
+ beforeUnmount() {
400
+ this.handleResizeObserver({ dispose: true })
368
401
  },
369
402
  methods: {
370
- calculateXAxisElOffset(index: number): number[] {
371
- let el = this.$refs[`xAxis-${index}`] as HTMLElement
372
- if (!el) return null
373
- if (Array.isArray(el)) {
374
- el = el[0]
375
- }
376
- const height = el.clientHeight
377
- const offsetHeight = -1 * (height / 2)
378
- return [0, offsetHeight]
403
+ calculateRotatedXLabels() {
404
+ const longest = Math.max(
405
+ ...this.visibleLabels.map(
406
+ (el: DlConfusionMatrixLabel) =>
407
+ (isObject(el) ? el.title : `${el}`).length
408
+ )
409
+ )
410
+ this.rotateXLabels = longest * 12 > getCellWidth()
379
411
  },
380
412
  handleResizeObserver(options: { dispose?: boolean } = {}) {
381
413
  const { dispose } = options
@@ -481,6 +513,7 @@ export default defineComponent({
481
513
  max-height: 100px;
482
514
  &__element {
483
515
  width: var(--cell-dimensions);
516
+ max-width: 100px;
484
517
  overflow: hidden;
485
518
  text-overflow: ellipsis;
486
519
  &--text {
@@ -532,7 +565,7 @@ export default defineComponent({
532
565
  grid-template-columns: repeat(var(--matrix-rows), 1fr);
533
566
 
534
567
  &__cell {
535
- font-size: 12px;
568
+ font-size: max(calc(var(--cell-dimensions) * 0.1), 12px);
536
569
  cursor: pointer;
537
570
  border: 1px solid var(--dl-color-separator);
538
571
  box-sizing: border-box;
@@ -55,7 +55,7 @@
55
55
  </template>
56
56
 
57
57
  <script lang="ts">
58
- import { ref, computed, watch, defineComponent } from 'vue-demi'
58
+ import { ref, computed, watch, defineComponent, PropType } from 'vue-demi'
59
59
 
60
60
  import useSlider, {
61
61
  useSliderProps,
@@ -91,7 +91,12 @@ export default defineComponent({
91
91
  }),
92
92
  validator: (v: Object) => 'min' in v && 'max' in v
93
93
  },
94
-
94
+ value: {
95
+ type: Object as PropType<{ min: number; max: number }>,
96
+ default: null,
97
+ required: false,
98
+ validator: (v: Object) => 'min' in v && 'max' in v
99
+ },
95
100
  dragRange: Boolean,
96
101
  dragOnlyRange: Boolean,
97
102
  trackColor: {
@@ -102,6 +107,10 @@ export default defineComponent({
102
107
  type: Number,
103
108
  default: null
104
109
  },
110
+ minRange: {
111
+ type: Number,
112
+ default: null
113
+ },
105
114
  selectionColor: {
106
115
  type: String,
107
116
  default: 'dl-color-chart-brush'
@@ -120,7 +129,8 @@ export default defineComponent({
120
129
  const rootRef = ref(null)
121
130
  const curMinRatio = ref(0)
122
131
  const curMaxRatio = ref(0)
123
- const model = ref({ min: 0, max: 0 })
132
+
133
+ const model = ref(props.value ?? { min: 0, max: 0 })
124
134
 
125
135
  function normalizeModel() {
126
136
  model.value.min =
@@ -152,6 +162,15 @@ export default defineComponent({
152
162
  normalizeModel
153
163
  )
154
164
 
165
+ watch(
166
+ () => props.value,
167
+ (v) => {
168
+ if (v !== null) {
169
+ model.value = v
170
+ }
171
+ }
172
+ )
173
+
155
174
  normalizeModel()
156
175
 
157
176
  const isMobile = computed(() => isMobileOrTablet())
@@ -392,7 +411,8 @@ export default defineComponent({
392
411
  break
393
412
  }
394
413
 
395
- if (pos.max - pos.min < props.maxRange) return
414
+ if (props.maxRange && pos.max - pos.min > props.maxRange) return
415
+ if (props.minRange && pos.max - pos.min < props.minRange) return
396
416
 
397
417
  model.value =
398
418
  model.value.min === null || model.value.max === null
@@ -1,10 +1,10 @@
1
1
  export interface DlConfusionMatrixCell {
2
2
  value: number
3
- unnormalizedValue: number
4
- xLabel: string | DlConfusionMatrixLabel
5
- yLabel: string | DlConfusionMatrixLabel
6
- x: number
7
- y: number
3
+ unnormalizedValue?: number
4
+ xLabel?: string | DlConfusionMatrixLabel
5
+ yLabel?: string | DlConfusionMatrixLabel
6
+ x?: number
7
+ y?: number
8
8
  link?: string
9
9
  }
10
10
 
@@ -34,12 +34,7 @@ import { v4 } from 'uuid'
34
34
  import { defineComponent, PropType } from 'vue-demi'
35
35
  import { DlKpi } from '../../basic'
36
36
  import { DlKpiCounterFormat } from '../../types'
37
-
38
- interface CounterItem {
39
- value?: number
40
- text: string
41
- subtext?: string
42
- }
37
+ import { DlCounterItem } from './types'
43
38
 
44
39
  export default defineComponent({
45
40
  name: 'DlCounters',
@@ -52,9 +47,9 @@ export default defineComponent({
52
47
  default: false
53
48
  },
54
49
  items: {
55
- type: Array as PropType<CounterItem[]>,
56
- default: (): CounterItem[] => [],
57
- validator(value: CounterItem[]): boolean {
50
+ type: Array as PropType<DlCounterItem[]>,
51
+ default: (): DlCounterItem[] => [],
52
+ validator(value: DlCounterItem[]): boolean {
58
53
  return value.length <= 8
59
54
  }
60
55
  },
@@ -0,0 +1,5 @@
1
+ export interface DlCounterItem {
2
+ value?: number
3
+ text: string
4
+ subtext?: string
5
+ }
@@ -11,3 +11,5 @@ export * from './DlTable/types'
11
11
  export * from './DlToggleButton/types'
12
12
  export * from './DlCodeEditor/types'
13
13
  export * from './DlCard/types'
14
+ export * from './DlThumbnailGallery/types'
15
+ export * from './DlCounters/types'
@@ -1,21 +1,21 @@
1
1
  <template>
2
2
  <div
3
- class="dl-page-layout"
3
+ class="dl-layout"
4
4
  :style="cssVars"
5
5
  >
6
- <div class="dl-page-layout__main-head">
6
+ <div class="dl-layout__main-head">
7
7
  <slot name="header" />
8
8
  </div>
9
- <div class="dl-page-layout__left-drawer">
9
+ <div class="dl-layout__left-drawer">
10
10
  <slot name="leftDrawer" />
11
11
  </div>
12
- <div class="dl-page-layout__right-drawer">
12
+ <div class="dl-layout__right-drawer">
13
13
  <slot name="rightDrawer" />
14
14
  </div>
15
- <div class="dl-page-layout__content">
16
- <slot name="mainContent" />
15
+ <div class="dl-layout__content">
16
+ <slot name="body" />
17
17
  </div>
18
- <div class="dl-page-layout__footer">
18
+ <div class="dl-layout__footer">
19
19
  <slot name="footer" />
20
20
  </div>
21
21
  </div>
@@ -24,7 +24,7 @@
24
24
  <script lang="ts">
25
25
  import { defineComponent, computed } from 'vue-demi'
26
26
  export default defineComponent({
27
- name: 'DlPageLayout',
27
+ name: 'DlLayout',
28
28
  props: {
29
29
  template: {
30
30
  type: String,
@@ -34,7 +34,7 @@ export default defineComponent({
34
34
  setup(props) {
35
35
  const cssVars = computed(() => {
36
36
  return {
37
- '--dl-page-layout-template': props.template
37
+ '--dl-layout-template': props.template
38
38
  }
39
39
  })
40
40
  return {
@@ -45,11 +45,11 @@ export default defineComponent({
45
45
  </script>
46
46
 
47
47
  <style scoped lang="scss">
48
- .dl-page-layout {
48
+ .dl-layout {
49
49
  height: 100vh;
50
50
  width: 100%;
51
51
  display: grid;
52
- grid-template-areas: var(--dl-page-layout-template);
52
+ grid-template-areas: var(--dl-layout-template);
53
53
  grid-template-rows: auto 1fr auto;
54
54
  grid-template-columns: auto 1fr auto;
55
55
  box-shadow: 1px 1px 1px var(--dl-color-separator);
@@ -0,0 +1,2 @@
1
+ import DlLayout from './DlLayout.vue'
2
+ export { DlLayout }
@@ -18,4 +18,4 @@ export * from './DlLink'
18
18
  export * from './DlColorPicker'
19
19
  export * from './DlSpinner'
20
20
  export * from './DlSeparator'
21
- export * from './DlPageLayout'
21
+ export * from './DlLayout'
@@ -1,67 +1,89 @@
1
1
  <template>
2
2
  <div>
3
- <dl-confusion-matrix
4
- :matrix="matrix"
5
- :labels="labels"
6
- />
7
-
8
- <dl-confusion-matrix
9
- :matrix="matrix"
10
- :labels="labels"
11
- is-empty
12
- :empty-state-props="{
13
- responsive: true,
14
- style: 'min-height: 350px;',
15
- bgSize: '130px',
16
- bgImage: `url(https://raw.githubusercontent.com/dataloop-ai/icons/main/assets/usage.svg)`,
17
- title: 'Lorem ipsum',
18
- subtitle:
19
- 'Lorem ipsum dolor sit amet consectetur. Senectus condimentum dolor sit',
20
- info: 'To learn more about this analytics, read our documentation.'
21
- }"
22
- >
23
- <template #links="">
24
- <div style="display: flex; gap: 5px; padding: 0 20px">
25
- <dl-button
26
- padding="0px"
27
- icon="icon-dl-sdk-documentation"
28
- flat
29
- uppercase
30
- label="SDK"
31
- />
32
- <div class="break" />
33
- <dl-button
34
- padding="0px"
35
- icon="icon-dl-file"
36
- flat
37
- label="Documentation"
38
- />
39
- <div class="break" />
40
- <dl-button
41
- padding="0px"
42
- icon="icon-dl-youtube"
43
- flat
44
- label="Video"
45
- />
46
- </div>
47
- </template>
48
- </dl-confusion-matrix>
3
+ <dl-accordion title="Matrix">
4
+ <dl-confusion-matrix
5
+ :matrix="matrix"
6
+ :labels="labels"
7
+ />
8
+ </dl-accordion>
9
+ <dl-accordion title="one label matrix">
10
+ <dl-confusion-matrix
11
+ :matrix="oneLabelMatrix"
12
+ :labels="oneLabelLabels"
13
+ />
14
+ </dl-accordion>
15
+ <dl-accordion title="two label matrix">
16
+ <dl-confusion-matrix
17
+ :matrix="twoLabelMatrix"
18
+ :labels="twoLabelLabels"
19
+ />
20
+ </dl-accordion>
21
+ <dl-accordion title="a hundred label matrix">
22
+ <dl-confusion-matrix
23
+ :matrix="aHundredLabelMatrix"
24
+ :labels="aHundredLabelLabels"
25
+ />
26
+ </dl-accordion>
27
+ <dl-accordion title="empty state">
28
+ <dl-confusion-matrix
29
+ :matrix="matrix"
30
+ :labels="labels"
31
+ is-empty
32
+ :empty-state-props="{
33
+ responsive: true,
34
+ style: 'min-height: 350px;',
35
+ bgSize: '130px',
36
+ bgImage: `url(https://raw.githubusercontent.com/dataloop-ai/icons/main/assets/usage.svg)`,
37
+ title: 'Lorem ipsum',
38
+ subtitle:
39
+ 'Lorem ipsum dolor sit amet consectetur. Senectus condimentum dolor sit',
40
+ info: 'To learn more about this analytics, read our documentation.'
41
+ }"
42
+ >
43
+ <template #links="">
44
+ <div style="display: flex; gap: 5px; padding: 0 20px">
45
+ <dl-button
46
+ padding="0px"
47
+ icon="icon-dl-sdk-documentation"
48
+ flat
49
+ uppercase
50
+ label="SDK"
51
+ />
52
+ <div class="break" />
53
+ <dl-button
54
+ padding="0px"
55
+ icon="icon-dl-file"
56
+ flat
57
+ label="Documentation"
58
+ />
59
+ <div class="break" />
60
+ <dl-button
61
+ padding="0px"
62
+ icon="icon-dl-youtube"
63
+ flat
64
+ label="Video"
65
+ />
66
+ </div>
67
+ </template>
68
+ </dl-confusion-matrix>
69
+ </dl-accordion>
49
70
  </div>
50
71
  </template>
51
72
 
52
73
  <script lang="ts">
53
74
  import { defineComponent } from 'vue-demi'
54
- import { DlConfusionMatrix, DlButton } from '../components'
75
+ import { DlConfusionMatrix, DlButton, DlAccordion } from '../components'
76
+ import { DlConfusionMatrixCell } from '../types'
55
77
 
56
78
  const getLink = (number: number) => {
57
79
  return `www.confusion-matrix.com/cell-${number}`
58
80
  }
59
81
 
60
82
  const getMatrix = (size: number) => {
61
- const newMatrix = []
83
+ const newMatrix: DlConfusionMatrixCell[][] = []
62
84
 
63
85
  for (let i = 0; i < size; i++) {
64
- const row = []
86
+ const row: DlConfusionMatrixCell[] = []
65
87
  for (let j = 0; j < size; j++) {
66
88
  const value = Math.floor(Math.random() * 10)
67
89
  row.push({
@@ -96,14 +118,34 @@ const getLabels = (size: number) => {
96
118
  export default defineComponent({
97
119
  components: {
98
120
  DlConfusionMatrix,
99
- DlButton
121
+ DlButton,
122
+ DlAccordion
100
123
  },
101
124
  setup() {
102
125
  const SIZE = 10
103
126
  const matrix = getMatrix(SIZE)
104
127
  const labels = getLabels(SIZE)
105
128
 
106
- return { matrix, labels, getLink }
129
+ const oneLabelMatrix = getMatrix(1)
130
+ const oneLabelLabels = getLabels(1)
131
+
132
+ const twoLabelMatrix = getMatrix(2)
133
+ const twoLabelLabels = getLabels(2)
134
+
135
+ const aHundredLabelMatrix = getMatrix(100)
136
+ const aHundredLabelLabels = getLabels(100)
137
+
138
+ return {
139
+ matrix,
140
+ labels,
141
+ getLink,
142
+ oneLabelMatrix,
143
+ oneLabelLabels,
144
+ aHundredLabelMatrix,
145
+ aHundredLabelLabels,
146
+ twoLabelMatrix,
147
+ twoLabelLabels
148
+ }
107
149
  }
108
150
  })
109
151
  </script>