@papaemmelab/isabl-web 0.3.25 → 0.3.26
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.
- package/dist/isabl-web.common.js +171 -206
- package/dist/isabl-web.umd.js +171 -206
- package/dist/isabl-web.umd.min.js +3 -3
- package/package.json +1 -1
package/dist/isabl-web.umd.js
CHANGED
|
@@ -14742,7 +14742,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".link-chip{text-decoration:none}.link-
|
|
|
14742
14742
|
|
|
14743
14743
|
/***/ }),
|
|
14744
14744
|
|
|
14745
|
-
/***/
|
|
14745
|
+
/***/ 7754:
|
|
14746
14746
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
14747
14747
|
|
|
14748
14748
|
"use strict";
|
|
@@ -14931,7 +14931,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".individual-tag{background-color:#e7f5
|
|
|
14931
14931
|
|
|
14932
14932
|
/***/ }),
|
|
14933
14933
|
|
|
14934
|
-
/***/
|
|
14934
|
+
/***/ 7987:
|
|
14935
14935
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
14936
14936
|
|
|
14937
14937
|
"use strict";
|
|
@@ -97199,19 +97199,19 @@ var update = add("1da0882b", content, true, {"sourceMap":false,"shadowMode":fals
|
|
|
97199
97199
|
|
|
97200
97200
|
/***/ }),
|
|
97201
97201
|
|
|
97202
|
-
/***/
|
|
97202
|
+
/***/ 57993:
|
|
97203
97203
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
97204
97204
|
|
|
97205
97205
|
// style-loader: Adds some css to the DOM by adding a <style> tag
|
|
97206
97206
|
|
|
97207
97207
|
// load the styles
|
|
97208
|
-
var content = __webpack_require__(
|
|
97208
|
+
var content = __webpack_require__(7754);
|
|
97209
97209
|
if(content.__esModule) content = content.default;
|
|
97210
97210
|
if(typeof content === 'string') content = [[module.id, content, '']];
|
|
97211
97211
|
if(content.locals) module.exports = content.locals;
|
|
97212
97212
|
// add the styles to the DOM
|
|
97213
97213
|
var add = (__webpack_require__(54402)/* ["default"] */ .Z)
|
|
97214
|
-
var update = add("
|
|
97214
|
+
var update = add("0bbe3012", content, true, {"sourceMap":false,"shadowMode":false});
|
|
97215
97215
|
|
|
97216
97216
|
/***/ }),
|
|
97217
97217
|
|
|
@@ -97343,19 +97343,19 @@ var update = add("4d420025", content, true, {"sourceMap":false,"shadowMode":fals
|
|
|
97343
97343
|
|
|
97344
97344
|
/***/ }),
|
|
97345
97345
|
|
|
97346
|
-
/***/
|
|
97346
|
+
/***/ 82380:
|
|
97347
97347
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
97348
97348
|
|
|
97349
97349
|
// style-loader: Adds some css to the DOM by adding a <style> tag
|
|
97350
97350
|
|
|
97351
97351
|
// load the styles
|
|
97352
|
-
var content = __webpack_require__(
|
|
97352
|
+
var content = __webpack_require__(7987);
|
|
97353
97353
|
if(content.__esModule) content = content.default;
|
|
97354
97354
|
if(typeof content === 'string') content = [[module.id, content, '']];
|
|
97355
97355
|
if(content.locals) module.exports = content.locals;
|
|
97356
97356
|
// add the styles to the DOM
|
|
97357
97357
|
var add = (__webpack_require__(54402)/* ["default"] */ .Z)
|
|
97358
|
-
var update = add("
|
|
97358
|
+
var update = add("63297040", content, true, {"sourceMap":false,"shadowMode":false});
|
|
97359
97359
|
|
|
97360
97360
|
/***/ }),
|
|
97361
97361
|
|
|
@@ -211020,7 +211020,7 @@ var MainSearchvue_type_template_id_2cb26e73_staticRenderFns = (cov_16wbf36ey0.s[
|
|
|
211020
211020
|
;// CONCATENATED MODULE: ./src/components/search/MainSearch.vue?vue&type=template&id=2cb26e73&
|
|
211021
211021
|
|
|
211022
211022
|
;// CONCATENATED MODULE: ./package.json
|
|
211023
|
-
var package_namespaceObject = {"i8":"0.3.
|
|
211023
|
+
var package_namespaceObject = {"i8":"0.3.26"};
|
|
211024
211024
|
;// CONCATENATED MODULE: ./src/utils/settings.js
|
|
211025
211025
|
var cov_1sxapcxhz3 = function () {
|
|
211026
211026
|
var path = "/Users/arangooj/papaemme/isabl_web/src/utils/settings.js";
|
|
@@ -214158,7 +214158,7 @@ var axios_default = /*#__PURE__*/__webpack_require__.n(axios);
|
|
|
214158
214158
|
function api_typeof(obj) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, api_typeof(obj); }
|
|
214159
214159
|
var cov_mm8t9pmbx = function () {
|
|
214160
214160
|
var path = "/Users/arangooj/papaemme/isabl_web/src/utils/api.js";
|
|
214161
|
-
var hash = "
|
|
214161
|
+
var hash = "0a4d47f54a6c3a0ebfb1b9447a02463908071fc9";
|
|
214162
214162
|
var global = new Function("return this")();
|
|
214163
214163
|
var gcv = "__coverage__";
|
|
214164
214164
|
var coverageData = {
|
|
@@ -215440,7 +215440,7 @@ var cov_mm8t9pmbx = function () {
|
|
|
215440
215440
|
column: 35
|
|
215441
215441
|
},
|
|
215442
215442
|
end: {
|
|
215443
|
-
line:
|
|
215443
|
+
line: 258,
|
|
215444
215444
|
column: 1
|
|
215445
215445
|
}
|
|
215446
215446
|
},
|
|
@@ -215456,11 +215456,11 @@ var cov_mm8t9pmbx = function () {
|
|
|
215456
215456
|
},
|
|
215457
215457
|
"129": {
|
|
215458
215458
|
start: {
|
|
215459
|
-
line:
|
|
215459
|
+
line: 257,
|
|
215460
215460
|
column: 2
|
|
215461
215461
|
},
|
|
215462
215462
|
end: {
|
|
215463
|
-
line:
|
|
215463
|
+
line: 257,
|
|
215464
215464
|
column: 68
|
|
215465
215465
|
}
|
|
215466
215466
|
}
|
|
@@ -216372,7 +216372,7 @@ var cov_mm8t9pmbx = function () {
|
|
|
216372
216372
|
column: 60
|
|
216373
216373
|
},
|
|
216374
216374
|
end: {
|
|
216375
|
-
line:
|
|
216375
|
+
line: 258,
|
|
216376
216376
|
column: 1
|
|
216377
216377
|
}
|
|
216378
216378
|
},
|
|
@@ -217023,7 +217023,7 @@ var cov_mm8t9pmbx = function () {
|
|
|
217023
217023
|
"13": [0, 0]
|
|
217024
217024
|
},
|
|
217025
217025
|
_coverageSchema: "43e27e138ebf9cfc5966b082cf9a028302ed4184",
|
|
217026
|
-
hash: "
|
|
217026
|
+
hash: "0a4d47f54a6c3a0ebfb1b9447a02463908071fc9"
|
|
217027
217027
|
};
|
|
217028
217028
|
var coverage = global[gcv] || (global[gcv] = {});
|
|
217029
217029
|
if (coverage[path] && coverage[path].hash === hash) {
|
|
@@ -217453,7 +217453,6 @@ cov_mm8t9pmbx.s[127]++;
|
|
|
217453
217453
|
var getExperimentIGVURL = function getExperimentIGVURL(system_id, assembly) {
|
|
217454
217454
|
cov_mm8t9pmbx.f[37]++;
|
|
217455
217455
|
var endpoint = (cov_mm8t9pmbx.s[128]++, api_endpoints['experiments']);
|
|
217456
|
-
// const endpoint = "http://localhost:8000/api/v1/experiments"
|
|
217457
217456
|
cov_mm8t9pmbx.s[129]++;
|
|
217458
217457
|
return "".concat(endpoint, "/igv/").concat(system_id, "?").concat(queryParams({
|
|
217459
217458
|
assembly: assembly
|
|
@@ -273579,10 +273578,10 @@ var RerunButton_component = normalizeComponent(
|
|
|
273579
273578
|
)
|
|
273580
273579
|
|
|
273581
273580
|
/* harmony default export */ var RerunButton = (RerunButton_component.exports);
|
|
273582
|
-
;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/analyses/ResultsGallery.vue?vue&type=template&id=
|
|
273581
|
+
;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/analyses/ResultsGallery.vue?vue&type=template&id=b464b2ba&
|
|
273583
273582
|
var cov_lsyw1a7bv = function () {
|
|
273584
273583
|
var path = "/Users/arangooj/papaemme/isabl_web/src/components/analyses/ResultsGallery.vue";
|
|
273585
|
-
var hash = "
|
|
273584
|
+
var hash = "37a0c8e228cc957542f8e940af9fe406703c987c";
|
|
273586
273585
|
var global = new Function("return this")();
|
|
273587
273586
|
var gcv = "__coverage__";
|
|
273588
273587
|
var coverageData = {
|
|
@@ -273625,7 +273624,7 @@ var cov_lsyw1a7bv = function () {
|
|
|
273625
273624
|
},
|
|
273626
273625
|
end: {
|
|
273627
273626
|
line: 1,
|
|
273628
|
-
column:
|
|
273627
|
+
column: 6622
|
|
273629
273628
|
}
|
|
273630
273629
|
},
|
|
273631
273630
|
"4": {
|
|
@@ -273721,31 +273720,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
273721
273720
|
"13": {
|
|
273722
273721
|
start: {
|
|
273723
273722
|
line: 1,
|
|
273724
|
-
column:
|
|
273723
|
+
column: 5085
|
|
273725
273724
|
},
|
|
273726
273725
|
end: {
|
|
273727
273726
|
line: 1,
|
|
273728
|
-
column:
|
|
273727
|
+
column: 5402
|
|
273729
273728
|
}
|
|
273730
273729
|
},
|
|
273731
273730
|
"14": {
|
|
273732
273731
|
start: {
|
|
273733
273732
|
line: 1,
|
|
273734
|
-
column:
|
|
273733
|
+
column: 5134
|
|
273735
273734
|
},
|
|
273736
273735
|
end: {
|
|
273737
273736
|
line: 1,
|
|
273738
|
-
column:
|
|
273737
|
+
column: 5396
|
|
273739
273738
|
}
|
|
273740
273739
|
},
|
|
273741
273740
|
"15": {
|
|
273742
273741
|
start: {
|
|
273743
273742
|
line: 1,
|
|
273744
|
-
column:
|
|
273743
|
+
column: 5212
|
|
273745
273744
|
},
|
|
273746
273745
|
end: {
|
|
273747
273746
|
line: 1,
|
|
273748
|
-
column:
|
|
273747
|
+
column: 5391
|
|
273749
273748
|
}
|
|
273750
273749
|
},
|
|
273751
273750
|
"16": {
|
|
@@ -274005,21 +274004,21 @@ var cov_lsyw1a7bv = function () {
|
|
|
274005
274004
|
decl: {
|
|
274006
274005
|
start: {
|
|
274007
274006
|
line: 1,
|
|
274008
|
-
column:
|
|
274007
|
+
column: 5065
|
|
274009
274008
|
},
|
|
274010
274009
|
end: {
|
|
274011
274010
|
line: 1,
|
|
274012
|
-
column:
|
|
274011
|
+
column: 5066
|
|
274013
274012
|
}
|
|
274014
274013
|
},
|
|
274015
274014
|
loc: {
|
|
274016
274015
|
start: {
|
|
274017
274016
|
line: 1,
|
|
274018
|
-
column:
|
|
274017
|
+
column: 5084
|
|
274019
274018
|
},
|
|
274020
274019
|
end: {
|
|
274021
274020
|
line: 1,
|
|
274022
|
-
column:
|
|
274021
|
+
column: 5403
|
|
274023
274022
|
}
|
|
274024
274023
|
},
|
|
274025
274024
|
line: 1
|
|
@@ -274029,21 +274028,21 @@ var cov_lsyw1a7bv = function () {
|
|
|
274029
274028
|
decl: {
|
|
274030
274029
|
start: {
|
|
274031
274030
|
line: 1,
|
|
274032
|
-
column:
|
|
274031
|
+
column: 5119
|
|
274033
274032
|
},
|
|
274034
274033
|
end: {
|
|
274035
274034
|
line: 1,
|
|
274036
|
-
column:
|
|
274035
|
+
column: 5120
|
|
274037
274036
|
}
|
|
274038
274037
|
},
|
|
274039
274038
|
loc: {
|
|
274040
274039
|
start: {
|
|
274041
274040
|
line: 1,
|
|
274042
|
-
column:
|
|
274041
|
+
column: 5133
|
|
274043
274042
|
},
|
|
274044
274043
|
end: {
|
|
274045
274044
|
line: 1,
|
|
274046
|
-
column:
|
|
274045
|
+
column: 5397
|
|
274047
274046
|
}
|
|
274048
274047
|
},
|
|
274049
274048
|
line: 1
|
|
@@ -274053,21 +274052,21 @@ var cov_lsyw1a7bv = function () {
|
|
|
274053
274052
|
decl: {
|
|
274054
274053
|
start: {
|
|
274055
274054
|
line: 1,
|
|
274056
|
-
column:
|
|
274055
|
+
column: 5189
|
|
274057
274056
|
},
|
|
274058
274057
|
end: {
|
|
274059
274058
|
line: 1,
|
|
274060
|
-
column:
|
|
274059
|
+
column: 5190
|
|
274061
274060
|
}
|
|
274062
274061
|
},
|
|
274063
274062
|
loc: {
|
|
274064
274063
|
start: {
|
|
274065
274064
|
line: 1,
|
|
274066
|
-
column:
|
|
274065
|
+
column: 5211
|
|
274067
274066
|
},
|
|
274068
274067
|
end: {
|
|
274069
274068
|
line: 1,
|
|
274070
|
-
column:
|
|
274069
|
+
column: 5392
|
|
274071
274070
|
}
|
|
274072
274071
|
},
|
|
274073
274072
|
line: 1
|
|
@@ -274082,7 +274081,7 @@ var cov_lsyw1a7bv = function () {
|
|
|
274082
274081
|
},
|
|
274083
274082
|
end: {
|
|
274084
274083
|
line: 1,
|
|
274085
|
-
column:
|
|
274084
|
+
column: 6622
|
|
274086
274085
|
}
|
|
274087
274086
|
},
|
|
274088
274087
|
type: "cond-expr",
|
|
@@ -274093,16 +274092,16 @@ var cov_lsyw1a7bv = function () {
|
|
|
274093
274092
|
},
|
|
274094
274093
|
end: {
|
|
274095
274094
|
line: 1,
|
|
274096
|
-
column:
|
|
274095
|
+
column: 6613
|
|
274097
274096
|
}
|
|
274098
274097
|
}, {
|
|
274099
274098
|
start: {
|
|
274100
274099
|
line: 1,
|
|
274101
|
-
column:
|
|
274100
|
+
column: 6614
|
|
274102
274101
|
},
|
|
274103
274102
|
end: {
|
|
274104
274103
|
line: 1,
|
|
274105
|
-
column:
|
|
274104
|
+
column: 6622
|
|
274106
274105
|
}
|
|
274107
274106
|
}],
|
|
274108
274107
|
line: 1
|
|
@@ -274544,7 +274543,7 @@ var cov_lsyw1a7bv = function () {
|
|
|
274544
274543
|
},
|
|
274545
274544
|
end: {
|
|
274546
274545
|
line: 1,
|
|
274547
|
-
column:
|
|
274546
|
+
column: 6601
|
|
274548
274547
|
}
|
|
274549
274548
|
},
|
|
274550
274549
|
type: "cond-expr",
|
|
@@ -274564,7 +274563,7 @@ var cov_lsyw1a7bv = function () {
|
|
|
274564
274563
|
},
|
|
274565
274564
|
end: {
|
|
274566
274565
|
line: 1,
|
|
274567
|
-
column:
|
|
274566
|
+
column: 6601
|
|
274568
274567
|
}
|
|
274569
274568
|
}],
|
|
274570
274569
|
line: 1
|
|
@@ -274610,7 +274609,7 @@ var cov_lsyw1a7bv = function () {
|
|
|
274610
274609
|
},
|
|
274611
274610
|
end: {
|
|
274612
274611
|
line: 1,
|
|
274613
|
-
column:
|
|
274612
|
+
column: 6601
|
|
274614
274613
|
}
|
|
274615
274614
|
},
|
|
274616
274615
|
type: "cond-expr",
|
|
@@ -274630,7 +274629,7 @@ var cov_lsyw1a7bv = function () {
|
|
|
274630
274629
|
},
|
|
274631
274630
|
end: {
|
|
274632
274631
|
line: 1,
|
|
274633
|
-
column:
|
|
274632
|
+
column: 6601
|
|
274634
274633
|
}
|
|
274635
274634
|
}],
|
|
274636
274635
|
line: 1
|
|
@@ -274643,7 +274642,7 @@ var cov_lsyw1a7bv = function () {
|
|
|
274643
274642
|
},
|
|
274644
274643
|
end: {
|
|
274645
274644
|
line: 1,
|
|
274646
|
-
column:
|
|
274645
|
+
column: 6601
|
|
274647
274646
|
}
|
|
274648
274647
|
},
|
|
274649
274648
|
type: "cond-expr",
|
|
@@ -274654,16 +274653,16 @@ var cov_lsyw1a7bv = function () {
|
|
|
274654
274653
|
},
|
|
274655
274654
|
end: {
|
|
274656
274655
|
line: 1,
|
|
274657
|
-
column:
|
|
274656
|
+
column: 4772
|
|
274658
274657
|
}
|
|
274659
274658
|
}, {
|
|
274660
274659
|
start: {
|
|
274661
274660
|
line: 1,
|
|
274662
|
-
column:
|
|
274661
|
+
column: 4773
|
|
274663
274662
|
},
|
|
274664
274663
|
end: {
|
|
274665
274664
|
line: 1,
|
|
274666
|
-
column:
|
|
274665
|
+
column: 6601
|
|
274667
274666
|
}
|
|
274668
274667
|
}],
|
|
274669
274668
|
line: 1
|
|
@@ -274672,31 +274671,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274672
274671
|
loc: {
|
|
274673
274672
|
start: {
|
|
274674
274673
|
line: 1,
|
|
274675
|
-
column:
|
|
274674
|
+
column: 4288
|
|
274676
274675
|
},
|
|
274677
274676
|
end: {
|
|
274678
274677
|
line: 1,
|
|
274679
|
-
column:
|
|
274678
|
+
column: 4747
|
|
274680
274679
|
}
|
|
274681
274680
|
},
|
|
274682
274681
|
type: "cond-expr",
|
|
274683
274682
|
locations: [{
|
|
274684
274683
|
start: {
|
|
274685
274684
|
line: 1,
|
|
274686
|
-
column:
|
|
274685
|
+
column: 4343
|
|
274687
274686
|
},
|
|
274688
274687
|
end: {
|
|
274689
274688
|
line: 1,
|
|
274690
|
-
column:
|
|
274689
|
+
column: 4738
|
|
274691
274690
|
}
|
|
274692
274691
|
}, {
|
|
274693
274692
|
start: {
|
|
274694
274693
|
line: 1,
|
|
274695
|
-
column:
|
|
274694
|
+
column: 4739
|
|
274696
274695
|
},
|
|
274697
274696
|
end: {
|
|
274698
274697
|
line: 1,
|
|
274699
|
-
column:
|
|
274698
|
+
column: 4747
|
|
274700
274699
|
}
|
|
274701
274700
|
}],
|
|
274702
274701
|
line: 1
|
|
@@ -274705,31 +274704,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274705
274704
|
loc: {
|
|
274706
274705
|
start: {
|
|
274707
274706
|
line: 1,
|
|
274708
|
-
column:
|
|
274707
|
+
column: 4289
|
|
274709
274708
|
},
|
|
274710
274709
|
end: {
|
|
274711
274710
|
line: 1,
|
|
274712
|
-
column:
|
|
274711
|
+
column: 4341
|
|
274713
274712
|
}
|
|
274714
274713
|
},
|
|
274715
274714
|
type: "binary-expr",
|
|
274716
274715
|
locations: [{
|
|
274717
274716
|
start: {
|
|
274718
274717
|
line: 1,
|
|
274719
|
-
column:
|
|
274718
|
+
column: 4289
|
|
274720
274719
|
},
|
|
274721
274720
|
end: {
|
|
274722
274721
|
line: 1,
|
|
274723
|
-
column:
|
|
274722
|
+
column: 4300
|
|
274724
274723
|
}
|
|
274725
274724
|
}, {
|
|
274726
274725
|
start: {
|
|
274727
274726
|
line: 1,
|
|
274728
|
-
column:
|
|
274727
|
+
column: 4304
|
|
274729
274728
|
},
|
|
274730
274729
|
end: {
|
|
274731
274730
|
line: 1,
|
|
274732
|
-
column:
|
|
274731
|
+
column: 4341
|
|
274733
274732
|
}
|
|
274734
274733
|
}],
|
|
274735
274734
|
line: 1
|
|
@@ -274738,31 +274737,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274738
274737
|
loc: {
|
|
274739
274738
|
start: {
|
|
274740
274739
|
line: 1,
|
|
274741
|
-
column:
|
|
274740
|
+
column: 4379
|
|
274742
274741
|
},
|
|
274743
274742
|
end: {
|
|
274744
274743
|
line: 1,
|
|
274745
|
-
column:
|
|
274744
|
+
column: 4539
|
|
274746
274745
|
}
|
|
274747
274746
|
},
|
|
274748
274747
|
type: "cond-expr",
|
|
274749
274748
|
locations: [{
|
|
274750
274749
|
start: {
|
|
274751
274750
|
line: 1,
|
|
274752
|
-
column:
|
|
274751
|
+
column: 4404
|
|
274753
274752
|
},
|
|
274754
274753
|
end: {
|
|
274755
274754
|
line: 1,
|
|
274756
|
-
column:
|
|
274755
|
+
column: 4530
|
|
274757
274756
|
}
|
|
274758
274757
|
}, {
|
|
274759
274758
|
start: {
|
|
274760
274759
|
line: 1,
|
|
274761
|
-
column:
|
|
274760
|
+
column: 4531
|
|
274762
274761
|
},
|
|
274763
274762
|
end: {
|
|
274764
274763
|
line: 1,
|
|
274765
|
-
column:
|
|
274764
|
+
column: 4539
|
|
274766
274765
|
}
|
|
274767
274766
|
}],
|
|
274768
274767
|
line: 1
|
|
@@ -274771,31 +274770,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274771
274770
|
loc: {
|
|
274772
274771
|
start: {
|
|
274773
274772
|
line: 1,
|
|
274774
|
-
column:
|
|
274773
|
+
column: 4565
|
|
274775
274774
|
},
|
|
274776
274775
|
end: {
|
|
274777
274776
|
line: 1,
|
|
274778
|
-
column:
|
|
274777
|
+
column: 4713
|
|
274779
274778
|
}
|
|
274780
274779
|
},
|
|
274781
|
-
type: "
|
|
274780
|
+
type: "cond-expr",
|
|
274782
274781
|
locations: [{
|
|
274783
274782
|
start: {
|
|
274784
274783
|
line: 1,
|
|
274785
|
-
column:
|
|
274784
|
+
column: 4589
|
|
274786
274785
|
},
|
|
274787
274786
|
end: {
|
|
274788
274787
|
line: 1,
|
|
274789
|
-
column:
|
|
274788
|
+
column: 4704
|
|
274790
274789
|
}
|
|
274791
274790
|
}, {
|
|
274792
274791
|
start: {
|
|
274793
274792
|
line: 1,
|
|
274794
|
-
column:
|
|
274793
|
+
column: 4705
|
|
274795
274794
|
},
|
|
274796
274795
|
end: {
|
|
274797
274796
|
line: 1,
|
|
274798
|
-
column:
|
|
274797
|
+
column: 4713
|
|
274799
274798
|
}
|
|
274800
274799
|
}],
|
|
274801
274800
|
line: 1
|
|
@@ -274804,31 +274803,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274804
274803
|
loc: {
|
|
274805
274804
|
start: {
|
|
274806
274805
|
line: 1,
|
|
274807
|
-
column:
|
|
274806
|
+
column: 4773
|
|
274808
274807
|
},
|
|
274809
274808
|
end: {
|
|
274810
274809
|
line: 1,
|
|
274811
|
-
column:
|
|
274810
|
+
column: 6601
|
|
274812
274811
|
}
|
|
274813
274812
|
},
|
|
274814
274813
|
type: "cond-expr",
|
|
274815
274814
|
locations: [{
|
|
274816
274815
|
start: {
|
|
274817
274816
|
line: 1,
|
|
274818
|
-
column:
|
|
274817
|
+
column: 4802
|
|
274819
274818
|
},
|
|
274820
274819
|
end: {
|
|
274821
274820
|
line: 1,
|
|
274822
|
-
column:
|
|
274821
|
+
column: 5672
|
|
274823
274822
|
}
|
|
274824
274823
|
}, {
|
|
274825
274824
|
start: {
|
|
274826
274825
|
line: 1,
|
|
274827
|
-
column:
|
|
274826
|
+
column: 5673
|
|
274828
274827
|
},
|
|
274829
274828
|
end: {
|
|
274830
274829
|
line: 1,
|
|
274831
|
-
column:
|
|
274830
|
+
column: 6601
|
|
274832
274831
|
}
|
|
274833
274832
|
}],
|
|
274834
274833
|
line: 1
|
|
@@ -274837,31 +274836,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274837
274836
|
loc: {
|
|
274838
274837
|
start: {
|
|
274839
274838
|
line: 1,
|
|
274840
|
-
column:
|
|
274839
|
+
column: 5260
|
|
274841
274840
|
},
|
|
274842
274841
|
end: {
|
|
274843
274842
|
line: 1,
|
|
274844
|
-
column:
|
|
274843
|
+
column: 5310
|
|
274845
274844
|
}
|
|
274846
274845
|
},
|
|
274847
274846
|
type: "cond-expr",
|
|
274848
274847
|
locations: [{
|
|
274849
274848
|
start: {
|
|
274850
274849
|
line: 1,
|
|
274851
|
-
column:
|
|
274850
|
+
column: 5287
|
|
274852
274851
|
},
|
|
274853
274852
|
end: {
|
|
274854
274853
|
line: 1,
|
|
274855
|
-
column:
|
|
274854
|
+
column: 5305
|
|
274856
274855
|
}
|
|
274857
274856
|
}, {
|
|
274858
274857
|
start: {
|
|
274859
274858
|
line: 1,
|
|
274860
|
-
column:
|
|
274859
|
+
column: 5308
|
|
274861
274860
|
},
|
|
274862
274861
|
end: {
|
|
274863
274862
|
line: 1,
|
|
274864
|
-
column:
|
|
274863
|
+
column: 5310
|
|
274865
274864
|
}
|
|
274866
274865
|
}],
|
|
274867
274866
|
line: 1
|
|
@@ -274870,31 +274869,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274870
274869
|
loc: {
|
|
274871
274870
|
start: {
|
|
274872
274871
|
line: 1,
|
|
274873
|
-
column:
|
|
274872
|
+
column: 5484
|
|
274874
274873
|
},
|
|
274875
274874
|
end: {
|
|
274876
274875
|
line: 1,
|
|
274877
|
-
column:
|
|
274876
|
+
column: 5666
|
|
274878
274877
|
}
|
|
274879
274878
|
},
|
|
274880
274879
|
type: "cond-expr",
|
|
274881
274880
|
locations: [{
|
|
274882
274881
|
start: {
|
|
274883
274882
|
line: 1,
|
|
274884
|
-
column:
|
|
274883
|
+
column: 5539
|
|
274885
274884
|
},
|
|
274886
274885
|
end: {
|
|
274887
274886
|
line: 1,
|
|
274888
|
-
column:
|
|
274887
|
+
column: 5657
|
|
274889
274888
|
}
|
|
274890
274889
|
}, {
|
|
274891
274890
|
start: {
|
|
274892
274891
|
line: 1,
|
|
274893
|
-
column:
|
|
274892
|
+
column: 5658
|
|
274894
274893
|
},
|
|
274895
274894
|
end: {
|
|
274896
274895
|
line: 1,
|
|
274897
|
-
column:
|
|
274896
|
+
column: 5666
|
|
274898
274897
|
}
|
|
274899
274898
|
}],
|
|
274900
274899
|
line: 1
|
|
@@ -274903,31 +274902,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274903
274902
|
loc: {
|
|
274904
274903
|
start: {
|
|
274905
274904
|
line: 1,
|
|
274906
|
-
column:
|
|
274905
|
+
column: 5485
|
|
274907
274906
|
},
|
|
274908
274907
|
end: {
|
|
274909
274908
|
line: 1,
|
|
274910
|
-
column:
|
|
274909
|
+
column: 5537
|
|
274911
274910
|
}
|
|
274912
274911
|
},
|
|
274913
274912
|
type: "binary-expr",
|
|
274914
274913
|
locations: [{
|
|
274915
274914
|
start: {
|
|
274916
274915
|
line: 1,
|
|
274917
|
-
column:
|
|
274916
|
+
column: 5485
|
|
274918
274917
|
},
|
|
274919
274918
|
end: {
|
|
274920
274919
|
line: 1,
|
|
274921
|
-
column:
|
|
274920
|
+
column: 5496
|
|
274922
274921
|
}
|
|
274923
274922
|
}, {
|
|
274924
274923
|
start: {
|
|
274925
274924
|
line: 1,
|
|
274926
|
-
column:
|
|
274925
|
+
column: 5500
|
|
274927
274926
|
},
|
|
274928
274927
|
end: {
|
|
274929
274928
|
line: 1,
|
|
274930
|
-
column:
|
|
274929
|
+
column: 5537
|
|
274931
274930
|
}
|
|
274932
274931
|
}],
|
|
274933
274932
|
line: 1
|
|
@@ -274936,31 +274935,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274936
274935
|
loc: {
|
|
274937
274936
|
start: {
|
|
274938
274937
|
line: 1,
|
|
274939
|
-
column:
|
|
274938
|
+
column: 5550
|
|
274940
274939
|
},
|
|
274941
274940
|
end: {
|
|
274942
274941
|
line: 1,
|
|
274943
|
-
column:
|
|
274942
|
+
column: 5655
|
|
274944
274943
|
}
|
|
274945
274944
|
},
|
|
274946
274945
|
type: "cond-expr",
|
|
274947
274946
|
locations: [{
|
|
274948
274947
|
start: {
|
|
274949
274948
|
line: 1,
|
|
274950
|
-
column:
|
|
274949
|
+
column: 5575
|
|
274951
274950
|
},
|
|
274952
274951
|
end: {
|
|
274953
274952
|
line: 1,
|
|
274954
|
-
column:
|
|
274953
|
+
column: 5619
|
|
274955
274954
|
}
|
|
274956
274955
|
}, {
|
|
274957
274956
|
start: {
|
|
274958
274957
|
line: 1,
|
|
274959
|
-
column:
|
|
274958
|
+
column: 5620
|
|
274960
274959
|
},
|
|
274961
274960
|
end: {
|
|
274962
274961
|
line: 1,
|
|
274963
|
-
column:
|
|
274962
|
+
column: 5655
|
|
274964
274963
|
}
|
|
274965
274964
|
}],
|
|
274966
274965
|
line: 1
|
|
@@ -274969,31 +274968,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
274969
274968
|
loc: {
|
|
274970
274969
|
start: {
|
|
274971
274970
|
line: 1,
|
|
274972
|
-
column:
|
|
274971
|
+
column: 5673
|
|
274973
274972
|
},
|
|
274974
274973
|
end: {
|
|
274975
274974
|
line: 1,
|
|
274976
|
-
column:
|
|
274975
|
+
column: 6601
|
|
274977
274976
|
}
|
|
274978
274977
|
},
|
|
274979
|
-
type: "
|
|
274978
|
+
type: "cond-expr",
|
|
274980
274979
|
locations: [{
|
|
274981
274980
|
start: {
|
|
274982
274981
|
line: 1,
|
|
274983
|
-
column:
|
|
274982
|
+
column: 5702
|
|
274984
274983
|
},
|
|
274985
274984
|
end: {
|
|
274986
274985
|
line: 1,
|
|
274987
|
-
column:
|
|
274986
|
+
column: 5838
|
|
274988
274987
|
}
|
|
274989
274988
|
}, {
|
|
274990
274989
|
start: {
|
|
274991
274990
|
line: 1,
|
|
274992
|
-
column:
|
|
274991
|
+
column: 5839
|
|
274993
274992
|
},
|
|
274994
274993
|
end: {
|
|
274995
274994
|
line: 1,
|
|
274996
|
-
column:
|
|
274995
|
+
column: 6601
|
|
274997
274996
|
}
|
|
274998
274997
|
}],
|
|
274999
274998
|
line: 1
|
|
@@ -275002,31 +275001,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
275002
275001
|
loc: {
|
|
275003
275002
|
start: {
|
|
275004
275003
|
line: 1,
|
|
275005
|
-
column:
|
|
275004
|
+
column: 5839
|
|
275006
275005
|
},
|
|
275007
275006
|
end: {
|
|
275008
275007
|
line: 1,
|
|
275009
|
-
column:
|
|
275008
|
+
column: 6601
|
|
275010
275009
|
}
|
|
275011
275010
|
},
|
|
275012
275011
|
type: "cond-expr",
|
|
275013
275012
|
locations: [{
|
|
275014
275013
|
start: {
|
|
275015
275014
|
line: 1,
|
|
275016
|
-
column:
|
|
275015
|
+
column: 5882
|
|
275017
275016
|
},
|
|
275018
275017
|
end: {
|
|
275019
275018
|
line: 1,
|
|
275020
|
-
column:
|
|
275019
|
+
column: 6080
|
|
275021
275020
|
}
|
|
275022
275021
|
}, {
|
|
275023
275022
|
start: {
|
|
275024
275023
|
line: 1,
|
|
275025
|
-
column:
|
|
275024
|
+
column: 6081
|
|
275026
275025
|
},
|
|
275027
275026
|
end: {
|
|
275028
275027
|
line: 1,
|
|
275029
|
-
column:
|
|
275028
|
+
column: 6601
|
|
275030
275029
|
}
|
|
275031
275030
|
}],
|
|
275032
275031
|
line: 1
|
|
@@ -275035,31 +275034,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
275035
275034
|
loc: {
|
|
275036
275035
|
start: {
|
|
275037
275036
|
line: 1,
|
|
275038
|
-
column:
|
|
275037
|
+
column: 6081
|
|
275039
275038
|
},
|
|
275040
275039
|
end: {
|
|
275041
275040
|
line: 1,
|
|
275042
|
-
column:
|
|
275041
|
+
column: 6601
|
|
275043
275042
|
}
|
|
275044
275043
|
},
|
|
275045
275044
|
type: "cond-expr",
|
|
275046
275045
|
locations: [{
|
|
275047
275046
|
start: {
|
|
275048
275047
|
line: 1,
|
|
275049
|
-
column:
|
|
275048
|
+
column: 6112
|
|
275050
275049
|
},
|
|
275051
275050
|
end: {
|
|
275052
275051
|
line: 1,
|
|
275053
|
-
column:
|
|
275052
|
+
column: 6275
|
|
275054
275053
|
}
|
|
275055
275054
|
}, {
|
|
275056
275055
|
start: {
|
|
275057
275056
|
line: 1,
|
|
275058
|
-
column:
|
|
275057
|
+
column: 6276
|
|
275059
275058
|
},
|
|
275060
275059
|
end: {
|
|
275061
275060
|
line: 1,
|
|
275062
|
-
column:
|
|
275061
|
+
column: 6601
|
|
275063
275062
|
}
|
|
275064
275063
|
}],
|
|
275065
275064
|
line: 1
|
|
@@ -275068,31 +275067,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
275068
275067
|
loc: {
|
|
275069
275068
|
start: {
|
|
275070
275069
|
line: 1,
|
|
275071
|
-
column:
|
|
275070
|
+
column: 6276
|
|
275072
275071
|
},
|
|
275073
275072
|
end: {
|
|
275074
275073
|
line: 1,
|
|
275075
|
-
column:
|
|
275074
|
+
column: 6601
|
|
275076
275075
|
}
|
|
275077
275076
|
},
|
|
275078
275077
|
type: "cond-expr",
|
|
275079
275078
|
locations: [{
|
|
275080
275079
|
start: {
|
|
275081
275080
|
line: 1,
|
|
275082
|
-
column:
|
|
275081
|
+
column: 6306
|
|
275083
275082
|
},
|
|
275084
275083
|
end: {
|
|
275085
275084
|
line: 1,
|
|
275086
|
-
column:
|
|
275085
|
+
column: 6433
|
|
275087
275086
|
}
|
|
275088
275087
|
}, {
|
|
275089
275088
|
start: {
|
|
275090
275089
|
line: 1,
|
|
275091
|
-
column:
|
|
275090
|
+
column: 6434
|
|
275092
275091
|
},
|
|
275093
275092
|
end: {
|
|
275094
275093
|
line: 1,
|
|
275095
|
-
column:
|
|
275094
|
+
column: 6601
|
|
275096
275095
|
}
|
|
275097
275096
|
}],
|
|
275098
275097
|
line: 1
|
|
@@ -275101,64 +275100,31 @@ var cov_lsyw1a7bv = function () {
|
|
|
275101
275100
|
loc: {
|
|
275102
275101
|
start: {
|
|
275103
275102
|
line: 1,
|
|
275104
|
-
column:
|
|
275103
|
+
column: 6434
|
|
275105
275104
|
},
|
|
275106
275105
|
end: {
|
|
275107
275106
|
line: 1,
|
|
275108
|
-
column:
|
|
275107
|
+
column: 6601
|
|
275109
275108
|
}
|
|
275110
275109
|
},
|
|
275111
275110
|
type: "cond-expr",
|
|
275112
275111
|
locations: [{
|
|
275113
275112
|
start: {
|
|
275114
275113
|
line: 1,
|
|
275115
|
-
column:
|
|
275114
|
+
column: 6484
|
|
275116
275115
|
},
|
|
275117
275116
|
end: {
|
|
275118
275117
|
line: 1,
|
|
275119
|
-
column:
|
|
275118
|
+
column: 6592
|
|
275120
275119
|
}
|
|
275121
275120
|
}, {
|
|
275122
275121
|
start: {
|
|
275123
275122
|
line: 1,
|
|
275124
|
-
column:
|
|
275123
|
+
column: 6593
|
|
275125
275124
|
},
|
|
275126
275125
|
end: {
|
|
275127
275126
|
line: 1,
|
|
275128
|
-
column:
|
|
275129
|
-
}
|
|
275130
|
-
}],
|
|
275131
|
-
line: 1
|
|
275132
|
-
},
|
|
275133
|
-
"32": {
|
|
275134
|
-
loc: {
|
|
275135
|
-
start: {
|
|
275136
|
-
line: 1,
|
|
275137
|
-
column: 6303
|
|
275138
|
-
},
|
|
275139
|
-
end: {
|
|
275140
|
-
line: 1,
|
|
275141
|
-
column: 6470
|
|
275142
|
-
}
|
|
275143
|
-
},
|
|
275144
|
-
type: "cond-expr",
|
|
275145
|
-
locations: [{
|
|
275146
|
-
start: {
|
|
275147
|
-
line: 1,
|
|
275148
|
-
column: 6353
|
|
275149
|
-
},
|
|
275150
|
-
end: {
|
|
275151
|
-
line: 1,
|
|
275152
|
-
column: 6461
|
|
275153
|
-
}
|
|
275154
|
-
}, {
|
|
275155
|
-
start: {
|
|
275156
|
-
line: 1,
|
|
275157
|
-
column: 6462
|
|
275158
|
-
},
|
|
275159
|
-
end: {
|
|
275160
|
-
line: 1,
|
|
275161
|
-
column: 6470
|
|
275127
|
+
column: 6601
|
|
275162
275128
|
}
|
|
275163
275129
|
}],
|
|
275164
275130
|
line: 1
|
|
@@ -275230,11 +275196,10 @@ var cov_lsyw1a7bv = function () {
|
|
|
275230
275196
|
"28": [0, 0],
|
|
275231
275197
|
"29": [0, 0],
|
|
275232
275198
|
"30": [0, 0],
|
|
275233
|
-
"31": [0, 0]
|
|
275234
|
-
"32": [0, 0]
|
|
275199
|
+
"31": [0, 0]
|
|
275235
275200
|
},
|
|
275236
275201
|
_coverageSchema: "43e27e138ebf9cfc5966b082cf9a028302ed4184",
|
|
275237
|
-
hash: "
|
|
275202
|
+
hash: "37a0c8e228cc957542f8e940af9fe406703c987c"
|
|
275238
275203
|
};
|
|
275239
275204
|
var coverage = global[gcv] || (global[gcv] = {});
|
|
275240
275205
|
if (coverage[path] && coverage[path].hash === hash) {
|
|
@@ -275243,7 +275208,7 @@ var cov_lsyw1a7bv = function () {
|
|
|
275243
275208
|
return coverage[path] = coverageData;
|
|
275244
275209
|
}();
|
|
275245
275210
|
cov_lsyw1a7bv.s[0]++;
|
|
275246
|
-
var
|
|
275211
|
+
var ResultsGalleryvue_type_template_id_b464b2ba_render = function render() {
|
|
275247
275212
|
cov_lsyw1a7bv.f[0]++;
|
|
275248
275213
|
var _vm = (cov_lsyw1a7bv.s[1]++, this),
|
|
275249
275214
|
_c = (cov_lsyw1a7bv.s[2]++, _vm._self._c);
|
|
@@ -275471,11 +275436,11 @@ var ResultsGalleryvue_type_template_id_1140a7e3_render = function render() {
|
|
|
275471
275436
|
})])) : (cov_lsyw1a7bv.b[16][1]++, _vm.resultType === 'raw' ? (cov_lsyw1a7bv.b[17][0]++, _c('code', {
|
|
275472
275437
|
ref: "raw",
|
|
275473
275438
|
staticClass: "v-markup"
|
|
275474
|
-
}, [_c('pre', [_vm._v(" " + _vm._s(_vm.content) + "\n "), (cov_lsyw1a7bv.b[19][0]++, _vm.content) && (cov_lsyw1a7bv.b[19][1]++, !_vm.streamOptions.end
|
|
275439
|
+
}, [_c('pre', [_vm._v(" " + _vm._s(_vm.content) + "\n "), _vm._v("\n "), (cov_lsyw1a7bv.b[19][0]++, _vm.content) && (cov_lsyw1a7bv.b[19][1]++, _vm.content.split('\n').length >= 200) ? (cov_lsyw1a7bv.b[18][0]++, _c('span', [_vm._v("\n "), !_vm.streamOptions.end ? (cov_lsyw1a7bv.b[20][0]++, _c('span', {
|
|
275475
275440
|
staticClass: "stream-message grey--text lighten-2"
|
|
275476
|
-
}, [_vm._v("\n
|
|
275441
|
+
}, [_vm._v("\n ... Loading more rows\n ")])) : (cov_lsyw1a7bv.b[20][1]++, _vm._e()), _vm._v("\n "), _vm.streamOptions.end ? (cov_lsyw1a7bv.b[21][0]++, _c('span', {
|
|
275477
275442
|
staticClass: "stream-message grey--text"
|
|
275478
|
-
}, [_vm._v("\n
|
|
275443
|
+
}, [_vm._v("\n *** End of file. ***\n ")])) : (cov_lsyw1a7bv.b[21][1]++, _vm._e()), _vm._v("\n ")])) : (cov_lsyw1a7bv.b[18][1]++, _vm._e()), _vm._v("\n ")])])) : (cov_lsyw1a7bv.b[17][1]++, _vm.resultType === 'table' ? (cov_lsyw1a7bv.b[22][0]++, _c('div', {
|
|
275479
275444
|
ref: "table",
|
|
275480
275445
|
staticClass: "tsv-table"
|
|
275481
275446
|
}, [_c('v-data-table', {
|
|
@@ -275515,13 +275480,13 @@ var ResultsGalleryvue_type_template_id_1140a7e3_render = function render() {
|
|
|
275515
275480
|
}], null, false, 3434796515)
|
|
275516
275481
|
}), _c('div', {
|
|
275517
275482
|
staticClass: "text-center stream-message"
|
|
275518
|
-
}, [(cov_lsyw1a7bv.b[25][0]++, _vm.content) && (cov_lsyw1a7bv.b[25][1]++,
|
|
275483
|
+
}, [(cov_lsyw1a7bv.b[25][0]++, _vm.content) && (cov_lsyw1a7bv.b[25][1]++, _vm.content.split('\n').length >= 200) ? (cov_lsyw1a7bv.b[24][0]++, _c('span', [!_vm.streamOptions.end ? (cov_lsyw1a7bv.b[26][0]++, _c('span', [_vm._v("... Loading more rows")])) : (cov_lsyw1a7bv.b[26][1]++, _c('span', [_vm._v("End of file.")]))])) : (cov_lsyw1a7bv.b[24][1]++, _vm._e())])], 1)) : (cov_lsyw1a7bv.b[22][1]++, _vm.resultType === 'image' ? (cov_lsyw1a7bv.b[27][0]++, _c('img', {
|
|
275519
275484
|
staticClass: "results-image",
|
|
275520
275485
|
attrs: {
|
|
275521
275486
|
"src": _vm.$store.getters.getBlobUrl(_vm.result.downloadUrl),
|
|
275522
275487
|
"alt": _vm.result.verboseName
|
|
275523
275488
|
}
|
|
275524
|
-
})) : (cov_lsyw1a7bv.b[
|
|
275489
|
+
})) : (cov_lsyw1a7bv.b[27][1]++, ['html', 'pdf'].includes(_vm.resultType) ? (cov_lsyw1a7bv.b[28][0]++, _c('iframe', {
|
|
275525
275490
|
staticClass: "results-iframe",
|
|
275526
275491
|
staticStyle: {
|
|
275527
275492
|
"width": "100%",
|
|
@@ -275532,7 +275497,7 @@ var ResultsGalleryvue_type_template_id_1140a7e3_render = function render() {
|
|
|
275532
275497
|
"src": _vm.$store.getters.getBlobUrl(_vm.result.downloadUrl, ''),
|
|
275533
275498
|
"frameborder": "0"
|
|
275534
275499
|
}
|
|
275535
|
-
})) : (cov_lsyw1a7bv.b[
|
|
275500
|
+
})) : (cov_lsyw1a7bv.b[28][1]++, _vm.resultType === 'igv_bam' ? (cov_lsyw1a7bv.b[29][0]++, _c('iframe', {
|
|
275536
275501
|
staticClass: "results-iframe",
|
|
275537
275502
|
staticStyle: {
|
|
275538
275503
|
"width": "100%",
|
|
@@ -275543,23 +275508,23 @@ var ResultsGalleryvue_type_template_id_1140a7e3_render = function render() {
|
|
|
275543
275508
|
"src": _vm.result.downloadUrl,
|
|
275544
275509
|
"frameborder": "0"
|
|
275545
275510
|
}
|
|
275546
|
-
})) : (cov_lsyw1a7bv.b[
|
|
275511
|
+
})) : (cov_lsyw1a7bv.b[29][1]++, _vm.resultType === 'number' ? (cov_lsyw1a7bv.b[30][0]++, _c('code', {
|
|
275547
275512
|
staticClass: "v-markup"
|
|
275548
275513
|
}, [_c('span', {
|
|
275549
275514
|
attrs: {
|
|
275550
275515
|
"size": "100px"
|
|
275551
275516
|
}
|
|
275552
|
-
}, [_vm._v(_vm._s(_vm._f("round")(_vm.result.value, 3)))])])) : (cov_lsyw1a7bv.b[
|
|
275517
|
+
}, [_vm._v(_vm._s(_vm._f("round")(_vm.result.value, 3)))])])) : (cov_lsyw1a7bv.b[30][1]++, ['string', 'url-link'].includes(_vm.resultType) ? (cov_lsyw1a7bv.b[31][0]++, _c('code', {
|
|
275553
275518
|
staticClass: "v-markup"
|
|
275554
275519
|
}, [_c('span', {
|
|
275555
275520
|
attrs: {
|
|
275556
275521
|
"size": "100px"
|
|
275557
275522
|
}
|
|
275558
|
-
}, [_vm._v(_vm._s(_vm.result.value))])])) : (cov_lsyw1a7bv.b[
|
|
275523
|
+
}, [_vm._v(_vm._s(_vm.result.value))])])) : (cov_lsyw1a7bv.b[31][1]++, _vm._e())))))))))], 1)], 1)], 1)) : (cov_lsyw1a7bv.b[0][1]++, _vm._e());
|
|
275559
275524
|
};
|
|
275560
|
-
var
|
|
275525
|
+
var ResultsGalleryvue_type_template_id_b464b2ba_staticRenderFns = (cov_lsyw1a7bv.s[16]++, []);
|
|
275561
275526
|
|
|
275562
|
-
;// CONCATENATED MODULE: ./src/components/analyses/ResultsGallery.vue?vue&type=template&id=
|
|
275527
|
+
;// CONCATENATED MODULE: ./src/components/analyses/ResultsGallery.vue?vue&type=template&id=b464b2ba&
|
|
275563
275528
|
|
|
275564
275529
|
// EXTERNAL MODULE: ./node_modules/detect-csv/index.js
|
|
275565
275530
|
var detect_csv = __webpack_require__(99935);
|
|
@@ -275567,7 +275532,7 @@ var detect_csv_default = /*#__PURE__*/__webpack_require__.n(detect_csv);
|
|
|
275567
275532
|
;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/analyses/ResultsGallery.vue?vue&type=script&lang=js&
|
|
275568
275533
|
var ResultsGalleryvue_type_script_lang_js_cov_lsyw1a7bv = function () {
|
|
275569
275534
|
var path = "/Users/arangooj/papaemme/isabl_web/src/components/analyses/ResultsGallery.vue";
|
|
275570
|
-
var hash = "
|
|
275535
|
+
var hash = "5d444039a2a8e9894579cef12c5354c23ba58df6";
|
|
275571
275536
|
var global = new Function("return this")();
|
|
275572
275537
|
var gcv = "__coverage__";
|
|
275573
275538
|
var coverageData = {
|
|
@@ -279169,13 +279134,13 @@ var ResultsGalleryvue_type_script_lang_js_cov_lsyw1a7bv = function () {
|
|
|
279169
279134
|
version: 3,
|
|
279170
279135
|
sources: ["ResultsGallery.vue"],
|
|
279171
279136
|
names: [],
|
|
279172
|
-
mappings: ";
|
|
279137
|
+
mappings: ";AAqRA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",
|
|
279173
279138
|
file: "ResultsGallery.vue",
|
|
279174
279139
|
sourceRoot: "src/components/analyses",
|
|
279175
|
-
sourcesContent: ["<template>\n <v-dialog\n v-hotkey=\"keymap\"\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :fullscreen=\"isResultModalFullScreen\"\n scrollable\n class=\"gallery-dialog\"\n >\n <v-card flat class=\"gallery-card\">\n <v-card-title class=\"pa-2\">\n <v-row>\n <v-col cols=\"6\">\n <h3 class=\"font-weight-thin primary--text\">\n {{ result.verboseName }}\n </h3>\n </v-col>\n\n <v-col cols=\"6\" class=\"d-flex justify-end align-center panel-slot-actions\">\n\n <!-- toggle raw text -->\n <v-tooltip\n v-if=\"result.frontendType === 'tsv-file' && tsvHeaders.length\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"displayRawText = !displayRawText\"\n v-on=\"on\"\n >\n {{ displayRawText ? 'table_chart' : 'text_fields' }}\n </v-icon>\n </template>\n {{ displayRawText ? 'Display Tabulated Content' : 'Display Raw Content' }}\n </v-tooltip>\n\n <!-- download result -->\n <v-tooltip\n v-if=\"result.download\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"result.download\"\n v-on=\"on\"\n >\n {{ result.downloadIcon }}\n </v-icon>\n </template>\n {{ result.downloadIcon === 'open_in_new' ? 'Open in new tab' : 'Download Result' }}\n </v-tooltip>\n\n <!-- copy to clipboard -->\n <v-tooltip\n v-if=\"result.copyToClipBoard\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"result.copyToClipBoard\"\n v-on=\"on\"\n >\n file_copy\n </v-icon>\n </template>\n Copy to clipboard!\n </v-tooltip>\n\n <!-- external link -->\n <v-tooltip\n v-if=\"result.openExternalLink\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"result.openExternalLink\"\n v-on=\"on\"\n >\n info\n </v-icon>\n </template>\n Learn more!\n </v-tooltip>\n\n <!-- show from bottom -->\n <v-tooltip\n v-if=\"['raw'].includes(resultType)\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"reverseContent\"\n v-on=\"on\"\n >\n {{ streamOptions.reverse ? 'vertical_align_bottom' : 'vertical_align_top'}}\n </v-icon>\n </template>\n <span>\n Show content from {{ streamOptions.reverse ? 'top' : 'bottom' }}\n </span>\n </v-tooltip>\n\n <!-- show fullscreen -->\n <v-tooltip\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"toggleFullScreen\"\n v-on=\"on\"\n >\n {{ isResultModalFullScreen ? 'fullscreen_exit' : 'fullscreen'}}\n </v-icon>\n </template>\n <span>\n Toggle Full Screen\n </span>\n </v-tooltip>\n\n <!-- close dialog -->\n <v-tooltip top>\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"hideDialog\"\n v-on=\"on\"\n >\n close\n </v-icon>\n </template>\n Close file\n </v-tooltip>\n </v-col>\n </v-row>\n </v-card-title>\n\n <v-row class=\"pa-0 ma-0 gallery-content\" style=\"height: 85vh\">\n <v-progress-linear\n v-if=\"loading\"\n class=\"panel-loader\"\n indeterminate\n height=\"2\"\n color=\"primary\"\n />\n\n <pre\n v-highlightjs=\"content\"\n v-if=\"resultType === 'raw' && resultKey === 'command_script'\"\n ref=\"raw\"\n class=\"v-markup pre-wrap\"\n >\n <code class=\"bash\" />\n </pre>\n\n <code\n v-else-if=\"isAnsi\"\n ref=\"raw\"\n class=\"v-markup\"\n >\n <pre v-html=\"content\" />\n </code>\n\n <code\n v-else-if=\"resultType === 'raw'\"\n ref=\"raw\"\n class=\"v-markup\"\n >\n <pre>\n {{ content }}\n <span v-if=\"content && !streamOptions.end\" class=\"stream-message grey--text lighten-2\">\n ... Loading more rows\n </span>\n <span v-if=\"!loading && streamOptions.end\" class=\"stream-message grey--text\">\n *** End of file. ***\n </span>\n </pre>\n </code>\n\n <div\n v-else-if=\"resultType === 'table'\"\n ref=\"table\"\n class=\"tsv-table\"\n >\n <v-data-table\n :headers=\"tsvHeaders\"\n :items=\"tsvItems\"\n :items-per-page=\"tsvItems.length\"\n hide-default-footer\n multi-sort\n fixed-header\n dense\n >\n <template v-slot:body=\"{ items }\">\n <tbody>\n <tr\n v-for=\"item in items\"\n :key=\"item.name\"\n >\n <td\n v-for=\"(header, index) in tsvHeaders\"\n :key=\"index + header.value\"\n :class=\"[header.value === 'index' ? 'line-column text' : '']\"\n v-html=\"parseTsvCell($get(item, header.value))\"\n />\n </tr>\n </tbody>\n </template>\n </v-data-table>\n\n <div class=\"text-center stream-message\">\n <span v-if=\"content && !streamOptions.end\">... Loading more rows</span>\n <span v-if=\"!loading && streamOptions.end\">End of file.</span>\n </div>\n </div>\n\n <img\n v-else-if=\"resultType === 'image'\"\n :src=\"$store.getters.getBlobUrl(result.downloadUrl)\"\n :alt=\"result.verboseName\"\n class=\"results-image\"\n >\n\n <iframe\n v-else-if=\"['html', 'pdf'].includes(resultType)\"\n :src=\"$store.getters.getBlobUrl(result.downloadUrl, '')\"\n frameborder=\"0\"\n class=\"results-iframe\"\n style=\"width: 100%; height: 100%; min-height: 80vh;\"\n />\n\n <iframe\n v-else-if=\"resultType === 'igv_bam'\"\n :src=\"result.downloadUrl\"\n frameborder=\"0\"\n class=\"results-iframe\"\n style=\"width: 100%; height: 100%; min-height: 80vh;\"\n />\n\n <code\n v-else-if=\"resultType === 'number'\"\n class=\"v-markup\"\n >\n <span size=\"100px\">{{ result.value | round(3) }}</span>\n </code>\n\n <code\n v-else-if=\"['string', 'url-link'].includes(resultType)\"\n class=\"v-markup\"\n >\n <span size=\"100px\">{{ result.value }}</span>\n </code>\n </v-row>\n\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { loadResult } from '@/utils/api'\nimport { HIDE_PANEL, SHOW_PANEL } from '@/store/actions/panels'\nimport { TOGGLE_RESULT_FULLSCREEN } from '@/store/actions/user'\nimport { GET_FILE } from '@/store/actions/files'\nimport { mapGetters } from 'vuex'\nimport detect from 'detect-csv'\n\nexport default {\n name: 'ResultsGallery',\n props: {\n resultIndex: {\n type: Number,\n },\n results: {\n type: Array,\n },\n },\n data() {\n return {\n content: '',\n displayRawText: false,\n isBottomScrolled: false,\n loading: false,\n showDialog: false,\n tsvItems: [],\n tsvHeaders: [],\n streamOptions: {\n lines: 200,\n offset: 0,\n reverse: false,\n previous: '',\n end: false,\n },\n }\n },\n computed: {\n ...mapGetters(['resultKey', 'isResultModalFullScreen']),\n keymap() {\n return {\n right: this.increaseIndex,\n left: this.decreaseIndex,\n esc: this.hideDialog,\n }\n },\n result() {\n return this.results[this.resultIndex] || {}\n },\n isAnsi() {\n return this.result && this.result.frontendType === 'ansi'\n },\n resultType() {\n if (this.result.frontendType === 'ansi') {\n return 'raw'\n } else if (this.result.frontendType === 'text-file') {\n return 'raw'\n } else if (this.result.frontendType === 'tsv-file') {\n if (\n !this.displayRawText &&\n this.tsvItems.length &&\n this.tsvHeaders.length\n ) {\n return 'table'\n } else {\n return 'raw'\n }\n } else {\n return this.result.frontendType\n }\n },\n },\n watch: {\n showDialog(value) {\n if (!value) {\n this.$store.dispatch(HIDE_PANEL, 'result')\n this.$emit('display-result', null)\n }\n },\n resultIndex(value) {\n this.showDialog = Number.isInteger(value) && value < this.results.length\n if (this.showDialog && ['raw', 'table'].includes(this.resultType)) {\n this.resetStreamEvents()\n this.loadFileContents()\n }\n },\n resultKey: {\n handler() {\n this.updateResultIndex()\n },\n immediate: true,\n },\n result(value) {\n if (value && value.resultKey) {\n this.$store.dispatch(SHOW_PANEL, {\n result: value.resultKey,\n })\n if (['html', 'pdf'].includes(value.frontendType)) {\n this.$store.dispatch(GET_FILE, value.downloadUrl)\n }\n // Track result viewed\n window.analytics.track('Result Previewed', value.analytics)\n }\n this.updateResultIndex()\n },\n isBottomScrolled(value) {\n if (value) {\n this.loadFileContents()\n }\n },\n displayRawText() {\n this.addScrollListener()\n },\n },\n methods: {\n resetStreamEvents() {\n // Reset content\n this.content = ''\n this.streamOptions = {\n lines: 200,\n offset: 0,\n reverse: false,\n previous: '',\n end: false,\n }\n // Remove listeners\n this.$nextTick(() => {\n if (this.$refs.raw) {\n this.$refs.raw.removeEventListener('scroll', this.isBottomVisible)\n }\n if (this.$refs.table) {\n this.$refs.table.removeEventListener('scroll', this.isBottomVisible)\n }\n })\n },\n addScrollListener() {\n this.$nextTick(() => {\n this.isBottomVisible()\n if (!this.isBottomScrolled) {\n if (this.$refs.raw) {\n this.$refs.raw.addEventListener('scroll', this.isBottomVisible)\n }\n if (this.$refs.table) {\n this.$refs.table.addEventListener('scroll', this.isBottomVisible)\n }\n }\n })\n },\n updateResultIndex() {\n if (this.resultKey !== this.result.resultKey) {\n this.results.forEach((result, index) => {\n if (result.resultKey === this.resultKey) {\n this.showDialog = true\n this.$emit('display-result', index)\n }\n })\n }\n },\n hideDialog() {\n if (this.showDialog) {\n this.showDialog = false\n }\n },\n increaseIndex() {\n if (this.showDialog) {\n if (this.resultIndex < this.results.length - 1) {\n this.$emit('display-result', this.resultIndex + 1)\n this.content = ''\n } else {\n this.$emit('display-result', 0)\n this.content = ''\n }\n }\n },\n decreaseIndex() {\n if (this.showDialog) {\n if (this.resultIndex > 0) {\n this.$emit('display-result', this.resultIndex - 1)\n } else {\n this.$emit('display-result', this.results.length - 1)\n }\n }\n },\n async loadFileContents() {\n const { lines, offset, reverse, end, previous } = this.streamOptions\n if (!end) {\n this.loading = true\n let content = await loadResult(\n this.result.analysis.pk,\n this.result.resultKey,\n lines,\n offset,\n reverse\n )\n this.loading = false\n\n if (content && previous !== content) {\n this.streamOptions.previous = content\n this.streamOptions.offset += lines\n this.content += content\n this.setTsvItems(this.content)\n this.addScrollListener()\n } else {\n this.streamOptions.end = true\n this.setTsvItems(this.content)\n }\n\n }\n },\n setTsvItems(content) {\n const isTsv = this.result.frontendType === 'tsv-file'\n const detectHandler = (\n detect(content.slice(0, 1000)) || { newline: '\\n', delimiter: '\\t'}\n )\n\n // csv to list of lists\n const dataRows =\n content && isTsv\n ? this.csvToArray(content.trim(), detectHandler.delimiter)\n .filter((row) => row.length)\n .filter((row) => row[0][0] !== '#' || row[0].includes('#CHROM'))\n : []\n\n // Headers\n this.tsvHeaders = dataRows.length\n ? dataRows[0].map((header, index) => {\n return {\n text: header,\n value: `index${index}`,\n sortable: this.streamOptions.end,\n }\n })\n : []\n\n this.tsvHeaders.unshift({\n text: 1,\n value: 'index',\n sortable: false,\n align: 'end',\n class: 'line-column text'\n })\n\n // Content rows\n this.tsvItems = dataRows.length\n ? dataRows.slice(1)\n .map((row, index) => {\n let dictRow = { index: index + 2 }\n row.forEach((value, index) => {\n dictRow[`index${index}`] = value\n })\n return dictRow\n })\n : []\n\n if (!isTsv || (isTsv && !this.tsvHeaders.length)) {\n this.displayRawText = true\n }\n },\n reverseContent() {\n const reverse = this.streamOptions.reverse\n this.resetStreamEvents()\n this.streamOptions.reverse = !reverse\n this.loadFileContents()\n },\n isBottomVisible() {\n const divElement = this.$refs[this.resultType]\n const scrollTop = divElement.scrollTop\n const visible = divElement.clientHeight\n const pageHeight = divElement.scrollHeight\n const bottomOfPage = visible + scrollTop >= pageHeight\n this.isBottomScrolled = bottomOfPage || pageHeight < visible\n },\n toggleFullScreen() {\n this.$store.dispatch(TOGGLE_RESULT_FULLSCREEN, {\n value: !this.isResultModalFullScreen\n })\n },\n parseTsvCell(value) {\n let pattern = /^((http|https|ftp):\\/\\/)/\n if (pattern.test(value)) {\n return `<a href=\"${value}\" target=\"_blank\">Open link</a>`\n } else {\n return value\n }\n },\n\n csvToArray(strData, strDelimiter=\",\") {\n // See: https://stackoverflow.com/a/1293163/3949081\n const objPattern = new RegExp(\n (\n // Delimiters.\n \"(\\\\\" + strDelimiter + \"|\\\\r?\\\\n|\\\\r|^)\" +\n // Quoted fields.\n \"(?:\\\"([^\\\"]*(?:\\\"\\\"[^\\\"]*)*)\\\"|\" +\n // Standard fields.\n \"([^\\\"\\\\\" + strDelimiter + \"\\\\r\\\\n]*))\"\n ),\n \"gi\"\n )\n const arrData = [[]]\n let arrMatches = null\n\n while (arrMatches = objPattern.exec(strData)) {\n // If not delimiter, an end of row has been reached\n const strMatchedDelimiter = arrMatches[1]\n if (\n strMatchedDelimiter.length &&\n strMatchedDelimiter !== strDelimiter\n ){\n arrData.push([])\n }\n\n let strMatchedValue\n if (arrMatches[2]){\n // Quoted value, Unescape any double quotes.\n strMatchedValue = arrMatches[2].replace(\n new RegExp( \"\\\"\\\"\", \"g\" ),\n \"\\\"\"\n )\n } else {\n // Non-quoted value.\n strMatchedValue = arrMatches[3]\n }\n arrData[arrData.length - 1].push(strMatchedValue)\n }\n return arrData\n }\n },\n}\n</script>\n\n<style lang=\"scss\">\n.tsv-table {\n max-width: 100%;\n max-height: 100%;\n margin: 0px auto;\n overflow: auto;\n}\n.v-dialog {\n overflow-y: visible !important; // truly important for iframe performance, dont remove!\n &:not(.v-dialog--fullscreen) {\n max-height: 100% !important;\n max-width: calc(100% - 48px);\n }\n iframe.results-iframe {\n height: 100% !important;\n }\n &.gallery-dialog {\n height: calc(100vh - 60px);\n }\n}\n.results-image {\n max-width: 100%;\n max-height: 85vh;\n margin: auto;\n max-height: 100%;\n width: auto;\n}\n.gallery-card {\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n}\n.v-application .gallery-card {\n .gallery-content {\n background: var(--v-background-base);\n }\n\n pre {\n white-space: pre-line;\n &.pre-wrap {\n white-space: pre-wrap;\n }\n code {\n font-size: 12px;\n font-weight: 600;\n }\n }\n\n &.theme--dark code {\n background-color: rgba(0,0,0,.05);\n }\n\n code.v-markup,\n pre.v-markup {\n padding: 10px;\n width: 100%;\n height: 100%;\n text-align: start;\n box-shadow: none;\n text-shadow: none;\n display: flex;\n position: relative;\n overflow-x: auto;\n overflow-y: auto;\n margin: 0px;\n top: 0px;\n color: rgb(255, 255, 255);\n border-radius: 0px;\n background: rgb(0, 0, 0);\n font-size: 12px;\n font-weight: 600;\n\n code.hljs {\n font-size: 12px;\n padding: 0px;\n\n .hljs-string,\n .hljs-bullet,\n .hljs-subst,\n .hljs-title,\n .hljs-section,\n .hljs-emphasis,\n .hljs-type,\n .hljs-built_in,\n .hljs-builtin-name,\n .hljs-selector-attr,\n .hljs-selector-pseudo,\n .hljs-addition,\n .hljs-variable,\n .hljs-template-tag,\n .hljs-template-variable {\n color: var(--v-warning-base);\n }\n }\n }\n\n .tsv-table {\n border: thin solid rgba(0,0,0,.12);\n margin-left: 0;\n\n .theme--dark {\n thead tr th {\n background: var(--v-surface-darken1);\n span {\n color: #9e9e9e;\n }\n }\n tbody tr td {\n background: var(--v-background-base);\n span {\n color: #9e9e9e;\n }\n }\n }\n\n thead tr {\n th {\n background: var(--v-background-base);\n max-width: 250px;\n white-space: nowrap;\n span {\n font-size: 12px;\n font-family: Roboto;\n color: #333333;\n }\n }\n }\n tbody tr {\n td {\n font-size: 12px;\n font-family: Roboto;\n overflow-x: auto;\n white-space: nowrap;\n max-width: 250px;\n }\n }\n\n thead tr th, tbody tr td {\n &.line-column {\n background: var(--v-surface-darken1);\n width: 50px;\n text-align: right;\n font-weight: normal;\n // Make line-column sticky\n position: sticky !important;\n left: 0;\n z-index: 9998;\n }\n }\n\n thead tr th .line-column {\n z-index: 9999;\n }\n }\n\n\n .stream-message {\n font-size: 12px;\n font-style: italic;\n margin: 20px 0px;\n }\n}\n</style>\n"]
|
|
279140
|
+
sourcesContent: ["<template>\n <v-dialog\n v-hotkey=\"keymap\"\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :fullscreen=\"isResultModalFullScreen\"\n scrollable\n class=\"gallery-dialog\"\n >\n <v-card flat class=\"gallery-card\">\n <v-card-title class=\"pa-2\">\n <v-row>\n <v-col cols=\"6\">\n <h3 class=\"font-weight-thin primary--text\">\n {{ result.verboseName }}\n </h3>\n </v-col>\n\n <v-col cols=\"6\" class=\"d-flex justify-end align-center panel-slot-actions\">\n\n <!-- toggle raw text -->\n <v-tooltip\n v-if=\"result.frontendType === 'tsv-file' && tsvHeaders.length\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"displayRawText = !displayRawText\"\n v-on=\"on\"\n >\n {{ displayRawText ? 'table_chart' : 'text_fields' }}\n </v-icon>\n </template>\n {{ displayRawText ? 'Display Tabulated Content' : 'Display Raw Content' }}\n </v-tooltip>\n\n <!-- download result -->\n <v-tooltip\n v-if=\"result.download\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"result.download\"\n v-on=\"on\"\n >\n {{ result.downloadIcon }}\n </v-icon>\n </template>\n {{ result.downloadIcon === 'open_in_new' ? 'Open in new tab' : 'Download Result' }}\n </v-tooltip>\n\n <!-- copy to clipboard -->\n <v-tooltip\n v-if=\"result.copyToClipBoard\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"result.copyToClipBoard\"\n v-on=\"on\"\n >\n file_copy\n </v-icon>\n </template>\n Copy to clipboard!\n </v-tooltip>\n\n <!-- external link -->\n <v-tooltip\n v-if=\"result.openExternalLink\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"result.openExternalLink\"\n v-on=\"on\"\n >\n info\n </v-icon>\n </template>\n Learn more!\n </v-tooltip>\n\n <!-- show from bottom -->\n <v-tooltip\n v-if=\"['raw'].includes(resultType)\"\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"reverseContent\"\n v-on=\"on\"\n >\n {{ streamOptions.reverse ? 'vertical_align_bottom' : 'vertical_align_top'}}\n </v-icon>\n </template>\n <span>\n Show content from {{ streamOptions.reverse ? 'top' : 'bottom' }}\n </span>\n </v-tooltip>\n\n <!-- show fullscreen -->\n <v-tooltip\n top\n >\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"toggleFullScreen\"\n v-on=\"on\"\n >\n {{ isResultModalFullScreen ? 'fullscreen_exit' : 'fullscreen'}}\n </v-icon>\n </template>\n <span>\n Toggle Full Screen\n </span>\n </v-tooltip>\n\n <!-- close dialog -->\n <v-tooltip top>\n <template v-slot:activator=\"{ on }\">\n <v-icon\n class=\"primary--text ml-4\"\n small\n @click=\"hideDialog\"\n v-on=\"on\"\n >\n close\n </v-icon>\n </template>\n Close file\n </v-tooltip>\n </v-col>\n </v-row>\n </v-card-title>\n\n <v-row class=\"pa-0 ma-0 gallery-content\" style=\"height: 85vh\">\n <v-progress-linear\n v-if=\"loading\"\n class=\"panel-loader\"\n indeterminate\n height=\"2\"\n color=\"primary\"\n />\n\n <pre\n v-highlightjs=\"content\"\n v-if=\"resultType === 'raw' && resultKey === 'command_script'\"\n ref=\"raw\"\n class=\"v-markup pre-wrap\"\n >\n <code class=\"bash\" />\n </pre>\n\n <code\n v-else-if=\"isAnsi\"\n ref=\"raw\"\n class=\"v-markup\"\n >\n <pre v-html=\"content\" />\n </code>\n\n <code\n v-else-if=\"resultType === 'raw'\"\n ref=\"raw\"\n class=\"v-markup\"\n >\n <pre>\n {{ content }}\n <!-- Footer showing if more content can be loaded -->\n <span v-if=\"content && content.split('\\n').length >= 200\">\n <span v-if=\"!streamOptions.end\" class=\"stream-message grey--text lighten-2\">\n ... Loading more rows\n </span>\n <span v-if=\"streamOptions.end\" class=\"stream-message grey--text\">\n *** End of file. ***\n </span>\n </span>\n </pre>\n </code>\n\n <div\n v-else-if=\"resultType === 'table'\"\n ref=\"table\"\n class=\"tsv-table\"\n >\n <v-data-table\n :headers=\"tsvHeaders\"\n :items=\"tsvItems\"\n :items-per-page=\"tsvItems.length\"\n hide-default-footer\n multi-sort\n fixed-header\n dense\n >\n <template v-slot:body=\"{ items }\">\n <tbody>\n <tr\n v-for=\"item in items\"\n :key=\"item.name\"\n >\n <td\n v-for=\"(header, index) in tsvHeaders\"\n :key=\"index + header.value\"\n :class=\"[header.value === 'index' ? 'line-column text' : '']\"\n v-html=\"parseTsvCell($get(item, header.value))\"\n />\n </tr>\n </tbody>\n </template>\n </v-data-table>\n\n <div class=\"text-center stream-message\">\n <!-- Footer showing if more content can be loaded -->\n <span v-if=\"content && content.split('\\n').length >= 200\">\n <span v-if=\"!streamOptions.end\">... Loading more rows</span>\n <span v-else>End of file.</span>\n </span>\n </div>\n </div>\n\n <img\n v-else-if=\"resultType === 'image'\"\n :src=\"$store.getters.getBlobUrl(result.downloadUrl)\"\n :alt=\"result.verboseName\"\n class=\"results-image\"\n >\n\n <iframe\n v-else-if=\"['html', 'pdf'].includes(resultType)\"\n :src=\"$store.getters.getBlobUrl(result.downloadUrl, '')\"\n frameborder=\"0\"\n class=\"results-iframe\"\n style=\"width: 100%; height: 100%; min-height: 80vh;\"\n />\n\n <iframe\n v-else-if=\"resultType === 'igv_bam'\"\n :src=\"result.downloadUrl\"\n frameborder=\"0\"\n class=\"results-iframe\"\n style=\"width: 100%; height: 100%; min-height: 80vh;\"\n />\n\n <code\n v-else-if=\"resultType === 'number'\"\n class=\"v-markup\"\n >\n <span size=\"100px\">{{ result.value | round(3) }}</span>\n </code>\n\n <code\n v-else-if=\"['string', 'url-link'].includes(resultType)\"\n class=\"v-markup\"\n >\n <span size=\"100px\">{{ result.value }}</span>\n </code>\n </v-row>\n\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { loadResult } from '@/utils/api'\nimport { HIDE_PANEL, SHOW_PANEL } from '@/store/actions/panels'\nimport { TOGGLE_RESULT_FULLSCREEN } from '@/store/actions/user'\nimport { GET_FILE } from '@/store/actions/files'\nimport { mapGetters } from 'vuex'\nimport detect from 'detect-csv'\n\nexport default {\n name: 'ResultsGallery',\n props: {\n resultIndex: {\n type: Number,\n },\n results: {\n type: Array,\n },\n },\n data() {\n return {\n content: '',\n displayRawText: false,\n isBottomScrolled: false,\n loading: false,\n showDialog: false,\n tsvItems: [],\n tsvHeaders: [],\n streamOptions: {\n lines: 200,\n offset: 0,\n reverse: false,\n previous: '',\n end: false,\n },\n }\n },\n computed: {\n ...mapGetters(['resultKey', 'isResultModalFullScreen']),\n keymap() {\n return {\n right: this.increaseIndex,\n left: this.decreaseIndex,\n esc: this.hideDialog,\n }\n },\n result() {\n return this.results[this.resultIndex] || {}\n },\n isAnsi() {\n return this.result && this.result.frontendType === 'ansi'\n },\n resultType() {\n if (this.result.frontendType === 'ansi') {\n return 'raw'\n } else if (this.result.frontendType === 'text-file') {\n return 'raw'\n } else if (this.result.frontendType === 'tsv-file') {\n if (\n !this.displayRawText &&\n this.tsvItems.length &&\n this.tsvHeaders.length\n ) {\n return 'table'\n } else {\n return 'raw'\n }\n } else {\n return this.result.frontendType\n }\n },\n },\n watch: {\n showDialog(value) {\n if (!value) {\n this.$store.dispatch(HIDE_PANEL, 'result')\n this.$emit('display-result', null)\n }\n },\n resultIndex(value) {\n this.showDialog = Number.isInteger(value) && value < this.results.length\n if (this.showDialog && ['raw', 'table'].includes(this.resultType)) {\n this.resetStreamEvents()\n this.loadFileContents()\n }\n },\n resultKey: {\n handler() {\n this.updateResultIndex()\n },\n immediate: true,\n },\n result(value) {\n if (value && value.resultKey) {\n this.$store.dispatch(SHOW_PANEL, {\n result: value.resultKey,\n })\n if (['html', 'pdf'].includes(value.frontendType)) {\n this.$store.dispatch(GET_FILE, value.downloadUrl)\n }\n // Track result viewed\n window.analytics.track('Result Previewed', value.analytics)\n }\n this.updateResultIndex()\n },\n isBottomScrolled(value) {\n if (value) {\n this.loadFileContents()\n }\n },\n displayRawText() {\n this.addScrollListener()\n },\n },\n methods: {\n resetStreamEvents() {\n // Reset content\n this.content = ''\n this.streamOptions = {\n lines: 200,\n offset: 0,\n reverse: false,\n previous: '',\n end: false,\n }\n // Remove listeners\n this.$nextTick(() => {\n if (this.$refs.raw) {\n this.$refs.raw.removeEventListener('scroll', this.isBottomVisible)\n }\n if (this.$refs.table) {\n this.$refs.table.removeEventListener('scroll', this.isBottomVisible)\n }\n })\n },\n addScrollListener() {\n this.$nextTick(() => {\n this.isBottomVisible()\n if (!this.isBottomScrolled) {\n if (this.$refs.raw) {\n this.$refs.raw.addEventListener('scroll', this.isBottomVisible)\n }\n if (this.$refs.table) {\n this.$refs.table.addEventListener('scroll', this.isBottomVisible)\n }\n }\n })\n },\n updateResultIndex() {\n if (this.resultKey !== this.result.resultKey) {\n this.results.forEach((result, index) => {\n if (result.resultKey === this.resultKey) {\n this.showDialog = true\n this.$emit('display-result', index)\n }\n })\n }\n },\n hideDialog() {\n if (this.showDialog) {\n this.showDialog = false\n }\n },\n increaseIndex() {\n if (this.showDialog) {\n if (this.resultIndex < this.results.length - 1) {\n this.$emit('display-result', this.resultIndex + 1)\n this.content = ''\n } else {\n this.$emit('display-result', 0)\n this.content = ''\n }\n }\n },\n decreaseIndex() {\n if (this.showDialog) {\n if (this.resultIndex > 0) {\n this.$emit('display-result', this.resultIndex - 1)\n } else {\n this.$emit('display-result', this.results.length - 1)\n }\n }\n },\n async loadFileContents() {\n const { lines, offset, reverse, end, previous } = this.streamOptions\n if (!end) {\n this.loading = true\n let content = await loadResult(\n this.result.analysis.pk,\n this.result.resultKey,\n lines,\n offset,\n reverse\n )\n this.loading = false\n\n if (content && previous !== content) {\n this.streamOptions.previous = content\n this.streamOptions.offset += lines\n this.content += content\n this.setTsvItems(this.content)\n this.addScrollListener()\n } else {\n this.streamOptions.end = true\n this.setTsvItems(this.content)\n }\n\n }\n },\n setTsvItems(content) {\n const isTsv = this.result.frontendType === 'tsv-file'\n const detectHandler = (\n detect(content.slice(0, 1000)) || { newline: '\\n', delimiter: '\\t'}\n )\n\n // csv to list of lists\n const dataRows =\n content && isTsv\n ? this.csvToArray(content.trim(), detectHandler.delimiter)\n .filter((row) => row.length)\n .filter((row) => row[0][0] !== '#' || row[0].includes('#CHROM'))\n : []\n\n // Headers\n this.tsvHeaders = dataRows.length\n ? dataRows[0].map((header, index) => {\n return {\n text: header,\n value: `index${index}`,\n sortable: this.streamOptions.end,\n }\n })\n : []\n\n this.tsvHeaders.unshift({\n text: 1,\n value: 'index',\n sortable: false,\n align: 'end',\n class: 'line-column text'\n })\n\n // Content rows\n this.tsvItems = dataRows.length\n ? dataRows.slice(1)\n .map((row, index) => {\n let dictRow = { index: index + 2 }\n row.forEach((value, index) => {\n dictRow[`index${index}`] = value\n })\n return dictRow\n })\n : []\n\n if (!isTsv || (isTsv && !this.tsvHeaders.length)) {\n this.displayRawText = true\n }\n },\n reverseContent() {\n const reverse = this.streamOptions.reverse\n this.resetStreamEvents()\n this.streamOptions.reverse = !reverse\n this.loadFileContents()\n },\n isBottomVisible() {\n const divElement = this.$refs[this.resultType]\n const scrollTop = divElement.scrollTop\n const visible = divElement.clientHeight\n const pageHeight = divElement.scrollHeight\n const bottomOfPage = visible + scrollTop >= pageHeight\n this.isBottomScrolled = bottomOfPage || pageHeight < visible\n },\n toggleFullScreen() {\n this.$store.dispatch(TOGGLE_RESULT_FULLSCREEN, {\n value: !this.isResultModalFullScreen\n })\n },\n parseTsvCell(value) {\n let pattern = /^((http|https|ftp):\\/\\/)/\n if (pattern.test(value)) {\n return `<a href=\"${value}\" target=\"_blank\">Open link</a>`\n } else {\n return value\n }\n },\n\n csvToArray(strData, strDelimiter=\",\") {\n // See: https://stackoverflow.com/a/1293163/3949081\n const objPattern = new RegExp(\n (\n // Delimiters.\n \"(\\\\\" + strDelimiter + \"|\\\\r?\\\\n|\\\\r|^)\" +\n // Quoted fields.\n \"(?:\\\"([^\\\"]*(?:\\\"\\\"[^\\\"]*)*)\\\"|\" +\n // Standard fields.\n \"([^\\\"\\\\\" + strDelimiter + \"\\\\r\\\\n]*))\"\n ),\n \"gi\"\n )\n const arrData = [[]]\n let arrMatches = null\n\n while (arrMatches = objPattern.exec(strData)) {\n // If not delimiter, an end of row has been reached\n const strMatchedDelimiter = arrMatches[1]\n if (\n strMatchedDelimiter.length &&\n strMatchedDelimiter !== strDelimiter\n ){\n arrData.push([])\n }\n\n let strMatchedValue\n if (arrMatches[2]){\n // Quoted value, Unescape any double quotes.\n strMatchedValue = arrMatches[2].replace(\n new RegExp( \"\\\"\\\"\", \"g\" ),\n \"\\\"\"\n )\n } else {\n // Non-quoted value.\n strMatchedValue = arrMatches[3]\n }\n arrData[arrData.length - 1].push(strMatchedValue)\n }\n return arrData\n }\n },\n}\n</script>\n\n<style lang=\"scss\">\n.tsv-table {\n max-width: 100%;\n max-height: 100%;\n margin: 0px auto;\n overflow: auto;\n}\n.v-dialog {\n overflow-y: visible !important; // truly important for iframe performance, dont remove!\n &:not(.v-dialog--fullscreen) {\n max-height: 100% !important;\n max-width: calc(100% - 48px);\n }\n iframe.results-iframe {\n height: 100% !important;\n }\n &.gallery-dialog {\n height: calc(100vh - 60px);\n }\n}\n.results-image {\n max-width: 100%;\n max-height: 85vh;\n margin: auto;\n max-height: 100%;\n width: auto;\n}\n.gallery-card {\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n}\n.v-application .gallery-card {\n .gallery-content {\n background: var(--v-background-base);\n }\n\n pre {\n white-space: pre-line;\n &.pre-wrap {\n white-space: pre-wrap;\n }\n code {\n font-size: 12px;\n font-weight: 600;\n }\n }\n\n &.theme--dark code {\n background-color: rgba(0,0,0,.05);\n }\n\n code.v-markup,\n pre.v-markup {\n padding: 10px;\n width: 100%;\n height: 100%;\n text-align: start;\n box-shadow: none;\n text-shadow: none;\n display: flex;\n position: relative;\n overflow-x: auto;\n overflow-y: auto;\n margin: 0px;\n top: 0px;\n color: rgb(255, 255, 255);\n border-radius: 0px;\n background: rgb(0, 0, 0);\n font-size: 12px;\n font-weight: 600;\n\n code.hljs {\n font-size: 12px;\n padding: 0px;\n\n .hljs-string,\n .hljs-bullet,\n .hljs-subst,\n .hljs-title,\n .hljs-section,\n .hljs-emphasis,\n .hljs-type,\n .hljs-built_in,\n .hljs-builtin-name,\n .hljs-selector-attr,\n .hljs-selector-pseudo,\n .hljs-addition,\n .hljs-variable,\n .hljs-template-tag,\n .hljs-template-variable {\n color: var(--v-warning-base);\n }\n }\n }\n\n .tsv-table {\n border: thin solid rgba(0,0,0,.12);\n margin-left: 0;\n\n .theme--dark {\n thead tr th {\n background: var(--v-surface-darken1);\n span {\n color: #9e9e9e;\n }\n }\n tbody tr td {\n background: var(--v-background-base);\n span {\n color: #9e9e9e;\n }\n }\n }\n\n thead tr {\n th {\n background: var(--v-background-base);\n max-width: 250px;\n white-space: nowrap;\n span {\n font-size: 12px;\n font-family: Roboto;\n color: #333333;\n }\n }\n }\n tbody tr {\n td {\n font-size: 12px;\n font-family: Roboto;\n overflow-x: auto;\n white-space: nowrap;\n max-width: 250px;\n }\n }\n\n thead tr th, tbody tr td {\n &.line-column {\n background: var(--v-surface-darken1);\n width: 50px;\n text-align: right;\n font-weight: normal;\n // Make line-column sticky\n position: sticky !important;\n left: 0;\n z-index: 9998;\n }\n }\n\n thead tr th .line-column {\n z-index: 9999;\n }\n }\n\n\n .stream-message {\n font-size: 12px;\n font-style: italic;\n margin: 20px 0px;\n }\n}\n</style>\n"]
|
|
279176
279141
|
},
|
|
279177
279142
|
_coverageSchema: "43e27e138ebf9cfc5966b082cf9a028302ed4184",
|
|
279178
|
-
hash: "
|
|
279143
|
+
hash: "5d444039a2a8e9894579cef12c5354c23ba58df6"
|
|
279179
279144
|
};
|
|
279180
279145
|
var coverage = global[gcv] || (global[gcv] = {});
|
|
279181
279146
|
if (coverage[path] && coverage[path].hash === hash) {
|
|
@@ -279721,9 +279686,9 @@ function ResultsGalleryvue_type_script_lang_js_toPrimitive(input, hint) { if (Re
|
|
|
279721
279686
|
});
|
|
279722
279687
|
;// CONCATENATED MODULE: ./src/components/analyses/ResultsGallery.vue?vue&type=script&lang=js&
|
|
279723
279688
|
/* harmony default export */ var analyses_ResultsGalleryvue_type_script_lang_js_ = (ResultsGalleryvue_type_script_lang_js_);
|
|
279724
|
-
// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-64.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/analyses/ResultsGallery.vue?vue&type=style&index=0&id=
|
|
279725
|
-
var
|
|
279726
|
-
;// CONCATENATED MODULE: ./src/components/analyses/ResultsGallery.vue?vue&type=style&index=0&id=
|
|
279689
|
+
// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-64.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/analyses/ResultsGallery.vue?vue&type=style&index=0&id=b464b2ba&prod&lang=scss&
|
|
279690
|
+
var ResultsGalleryvue_type_style_index_0_id_b464b2ba_prod_lang_scss_ = __webpack_require__(57993);
|
|
279691
|
+
;// CONCATENATED MODULE: ./src/components/analyses/ResultsGallery.vue?vue&type=style&index=0&id=b464b2ba&prod&lang=scss&
|
|
279727
279692
|
|
|
279728
279693
|
;// CONCATENATED MODULE: ./src/components/analyses/ResultsGallery.vue
|
|
279729
279694
|
|
|
@@ -279736,8 +279701,8 @@ var ResultsGalleryvue_type_style_index_0_id_1140a7e3_prod_lang_scss_ = __webpack
|
|
|
279736
279701
|
|
|
279737
279702
|
var ResultsGallery_component = normalizeComponent(
|
|
279738
279703
|
analyses_ResultsGalleryvue_type_script_lang_js_,
|
|
279739
|
-
|
|
279740
|
-
|
|
279704
|
+
ResultsGalleryvue_type_template_id_b464b2ba_render,
|
|
279705
|
+
ResultsGalleryvue_type_template_id_b464b2ba_staticRenderFns,
|
|
279741
279706
|
false,
|
|
279742
279707
|
null,
|
|
279743
279708
|
null,
|
|
@@ -328977,7 +328942,7 @@ var BioModelPanelvue_type_template_id_3ac4385c_staticRenderFns = (cov_1tpnym9o7k
|
|
|
328977
328942
|
|
|
328978
328943
|
;// CONCATENATED MODULE: ./src/components/bioModels/BioModelPanel.vue?vue&type=template&id=3ac4385c&
|
|
328979
328944
|
|
|
328980
|
-
;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/bioModels/BioModelTree.vue?vue&type=template&id=
|
|
328945
|
+
;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/bioModels/BioModelTree.vue?vue&type=template&id=337f42f6&
|
|
328981
328946
|
var cov_2f0u9tmiep = function () {
|
|
328982
328947
|
var path = "/Users/arangooj/papaemme/isabl_web/src/components/bioModels/BioModelTree.vue";
|
|
328983
328948
|
var hash = "f7765366ebb3c7a640aaf82703057afe08ae5056";
|
|
@@ -329344,7 +329309,7 @@ var cov_2f0u9tmiep = function () {
|
|
|
329344
329309
|
return coverage[path] = coverageData;
|
|
329345
329310
|
}();
|
|
329346
329311
|
cov_2f0u9tmiep.s[0]++;
|
|
329347
|
-
var
|
|
329312
|
+
var BioModelTreevue_type_template_id_337f42f6_render = function render() {
|
|
329348
329313
|
cov_2f0u9tmiep.f[0]++;
|
|
329349
329314
|
var _vm = (cov_2f0u9tmiep.s[1]++, this),
|
|
329350
329315
|
_c = (cov_2f0u9tmiep.s[2]++, _vm._self._c);
|
|
@@ -329419,14 +329384,14 @@ var BioModelTreevue_type_template_id_2e68a456_render = function render() {
|
|
|
329419
329384
|
staticClass: "individual-tree text-center pa-0 ma-0"
|
|
329420
329385
|
})], 1)], 1);
|
|
329421
329386
|
};
|
|
329422
|
-
var
|
|
329387
|
+
var BioModelTreevue_type_template_id_337f42f6_staticRenderFns = (cov_2f0u9tmiep.s[9]++, []);
|
|
329423
329388
|
|
|
329424
|
-
;// CONCATENATED MODULE: ./src/components/bioModels/BioModelTree.vue?vue&type=template&id=
|
|
329389
|
+
;// CONCATENATED MODULE: ./src/components/bioModels/BioModelTree.vue?vue&type=template&id=337f42f6&
|
|
329425
329390
|
|
|
329426
329391
|
;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/bioModels/BioModelTree.vue?vue&type=script&lang=js&
|
|
329427
329392
|
var BioModelTreevue_type_script_lang_js_cov_2f0u9tmiep = function () {
|
|
329428
329393
|
var path = "/Users/arangooj/papaemme/isabl_web/src/components/bioModels/BioModelTree.vue";
|
|
329429
|
-
var hash = "
|
|
329394
|
+
var hash = "be336c38506a643b71832f44cd825ff3c922878c";
|
|
329430
329395
|
var global = new Function("return this")();
|
|
329431
329396
|
var gcv = "__coverage__";
|
|
329432
329397
|
var coverageData = {
|
|
@@ -334946,10 +334911,10 @@ var BioModelTreevue_type_script_lang_js_cov_2f0u9tmiep = function () {
|
|
|
334946
334911
|
mappings: ";AA4CA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",
|
|
334947
334912
|
file: "BioModelTree.vue",
|
|
334948
334913
|
sourceRoot: "src/components/bioModels",
|
|
334949
|
-
sourcesContent: ["<template>\n <v-card\n flat\n class=\"isabl-base-card\"\n data-test=\"biomodel-tree\"\n >\n <base-section-title\n :show-more=\"showTree\"\n @toggle-show-more=\"showTree = !showTree\"\n >\n <template v-slot:title>Samples Tree</template>\n <template v-slot:actions>\n <div>\n <v-btn\n v-if=\"isBigTree\"\n class=\"table-action-btn pull-right ma-0\"\n fab\n outlined\n color=\"primary\"\n @click=\"\n showFullHeight = !showFullHeight\n scrollToCurrentNode()\n \"\n >\n <v-icon color=\"primary\">{{ showFullHeight ? 'expand_less' : 'expand_more' }}</v-icon>\n </v-btn>\n </div>\n </template>\n </base-section-title>\n\n <!-- Graph -->\n <v-row\n v-show=\"showTree\"\n id=\"tree-div\"\n :style=\"showFullHeight ? '' : 'max-height: 300px;'\"\n class=\"individual-tree-div ma-0\"\n >\n <v-col class=\"individual-tree text-center pa-0 ma-0\" />\n </v-row>\n\n </v-card>\n</template>\n\n<script>\n/*\n Vue implementation of D3 Tree from:\n https://beta.observablehq.com/@asktree/interactive-tree-diagram-d3v4-v5\n*/\n\nimport { fetchIndividualTree } from '@/utils/api'\nimport { mapGetters } from 'vuex'\nimport { SHOW_ALERT } from '@/store/actions/alert'\nimport { SHOW_PANEL } from '@/store/actions/panels'\nimport BasePanel from '@/components/base/BasePanel.vue'\nimport BaseSectionTitle from '@/components/base/BaseSectionTitle'\nimport {\n tree as d3Tree,\n event as d3Event,\n select as d3Select,\n hierarchy as d3Hierarchy,\n linkHorizontal as d3linkHorizontal\n} from 'd3'\n\nexport default {\n name: 'BioModelTree',\n components: {\n BasePanel,\n BaseSectionTitle\n },\n data() {\n const { treeIcons } = this.$settings\n return {\n loading: false,\n duration: 0,\n data: null,\n root: null,\n tree: null,\n graph: null,\n species: null,\n dataNodes: null,\n showTree: true,\n isBigTree: false,\n showFullHeight: true,\n skipToScrollNode: false,\n currentNode: null,\n nodeSize: Object.keys(treeIcons).length ? 15 : 5,\n margin: { top: 20, bottom: 20, right: 0, left: 105 },\n diagonal: d3linkHorizontal()\n .x(d => d.y)\n .y(d => d.x),\n treeIcons\n }\n },\n computed: {\n ...mapGetters({\n currentModel: 'bioModelId',\n individual: 'individualId'\n })\n },\n watch: {\n individual(value, oldValue) {\n if (value !== oldValue) {\n this.fetchData()\n }\n },\n currentModel() {\n this.data && this.update(this.data)\n }\n },\n mounted() {\n this.fetchData()\n },\n methods: {\n buildTree() {\n let dx = Object.keys(this.treeIcons).length ? this.nodeSize + 4 : 18\n let dy = 0\n let iconSize = this.nodeSize\n\n // set width\n this.width = 540 - this.margin.right - this.margin.left\n this.tree = d3Tree()\n .nodeSize([dx, dy])\n .separation((a, b) => (a.parent == b.parent ? 1.75 : 2.5))\n\n // clear div\n let div = d3Select(this.$el).select('.individual-tree')\n div.selectAll('svg').remove()\n\n // create svg\n this.svg = div\n .append('svg')\n .attr('width', this.width)\n .attr('height', dx)\n .attr('viewBox', [-this.margin.left, -this.margin.top, this.width, dx])\n .style('font', '10px sans-serif')\n .style('user-select', 'none')\n\n // create filters\n this.svg\n .append('svg:filter')\n .attr('id', 'invertColor')\n .append('feColorMatrix')\n .attr('in', 'SourceGraphic')\n .attr('type', 'matrix')\n .attr('values', '-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0')\n\n // create image definitions\n const defs = this.svg.append('svg:defs')\n Object.keys(this.treeIcons).forEach(model => {\n const pattern = defs\n .append('svg:pattern')\n .attr('id', `icon-${model}`)\n .attr('width', iconSize)\n .attr('height', iconSize)\n .attr('patternUnits', 'objectBoundingBox')\n\n pattern\n .append('rect')\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('fill', 'var(--v-primary-base)')\n\n pattern\n .append('svg:image')\n .attr('xlink:href', this.treeIcons[model])\n .attr('width', iconSize)\n .attr('height', iconSize)\n .attr('x', iconSize / 2)\n .attr('y', iconSize / 2)\n .attr('filter', 'url(#invertColor)')\n })\n\n // create links\n this.gLink = this.svg\n .append('g')\n .attr('fill', 'none')\n .attr('stroke', '#555')\n .attr('stroke-opacity', 0.4)\n .attr('stroke-width', 1.5)\n\n // create tooltip\n this.tooltip = d3Select('body')\n .append('div')\n .style('position', 'absolute')\n .style('z-index', '9999')\n .style('visibility', 'hidden')\n\n // create nodes\n this.gNode = this.svg.append('g')\n\n // build root\n this.root = d3Hierarchy(this.data, d => d.children)\n this.root.x0 = dy\n this.root.y0 = 0\n this.root.descendants().forEach((d, i) => {\n d.id = i\n d.collapsed = false\n d._children = d.children\n\n // collapse samples with too many experiments\n if (d.depth !== 0 && d.children ? d.children.length > 10 : false) {\n d.children = null\n d.collapsed = true\n }\n\n // by default hide tree if too many samples\n if (d.depth === 0 && d.children && d.children.length > 10) {\n this.showFullHeight = false\n this.isBigTree = true\n }\n })\n\n this.update(this.root)\n },\n async fetchData() {\n if (this.individual) {\n this.loading = true\n let individual = await fetchIndividualTree(this.individual)\n this.species = individual.species\n\n // Format Individual Tree\n let individualNode = {}\n individualNode.id = individual.system_id\n individualNode.uuid = individual.uuid\n individualNode.name = individual.system_id\n individualNode.parent = null\n individualNode.individual = individual\n individualNode.class = 'individual'\n if (individual.species === 'MOUSE') {\n individualNode.img = 'mouse'\n } else if (individual.species === 'HUMAN') {\n if (individual.gender === 'FEMALE') {\n individualNode.img = 'female'\n } else {\n individualNode.img = 'male'\n }\n } else {\n individualNode.img = 'alien'\n }\n individualNode.children = individual.sample_set.map(sample => {\n // Samples Children\n let sampleNode = {}\n sampleNode.id = sample.system_id\n sampleNode.uuid = sample.uuid\n sampleNode.name = sample.system_id.split('_')\n sampleNode.name = sampleNode.name[sampleNode.name.length - 1]\n sampleNode.parent = individual.system_id\n sampleNode.sample = sample\n sampleNode.individual = individual\n sampleNode.class = 'sample'\n\n if (sample.category === 'TUMOR') {\n sampleNode.img = 'tumor'\n } else {\n sampleNode.img = 'normal'\n }\n\n let aliquots_ids = [\n ...new Set(sample.experiment_set.map(e => e.aliquot_id))\n ]\n\n sampleNode.children = aliquots_ids\n .map(aliquot_id => {\n // Aliquot children\n let aliquotNode = {}\n aliquotNode.aliquot_id = aliquot_id\n aliquotNode.name = ''\n aliquotNode.parent = sample.system_id\n aliquotNode.sample = sample\n aliquotNode.sampleNode = sampleNode\n aliquotNode.individual = individual\n aliquotNode.class = 'aliquot'\n aliquotNode.img = 'aliquot'\n aliquotNode.children = []\n\n sample.experiment_set.map(experiment => {\n // Experiment Children\n if (experiment.aliquot_id === aliquot_id) {\n let experimentNode = {}\n experimentNode.parent = sample.system_id\n experimentNode.sample = sample\n experimentNode.individual = individual\n experimentNode.aliquot_id = experiment.aliquot_id\n experimentNode.id = experiment.system_id\n experimentNode.uuid = experiment.uuid\n experimentNode.class = 'experiment'\n experimentNode.experiment = experiment\n\n let name = experiment.system_id.split('_')\n experimentNode.name = name[name.length - 1]\n\n if (experiment.custom_fields.is_pdx) {\n experimentNode.img = 'mouse'\n } else {\n if (experiment.technique.category === 'IMG') {\n experimentNode.img = 'image'\n } else if (experiment.technique.category === 'TISSUE') {\n experimentNode.img = 'tissue'\n if (experiment.technique.method === 'CG') {\n experimentNode.img = 'chromosome'\n }\n if (experiment.technique.method === 'HP') {\n experimentNode.img = 'tissue'\n }\n if (experiment.technique.method === 'FC') {\n experimentNode.img = 'cells'\n }\n } else if (experiment.technique.category === 'RNA') {\n experimentNode.img = 'rna'\n } else if (experiment.technique.category === 'DNA') {\n experimentNode.img = 'dna'\n } else {\n experimentNode.img = 'dna'\n }\n }\n\n // legacy leukgen ID\n if (experiment.system_id.split('-').length === 7) {\n aliquotNode.name = experiment.system_id.split('-')[4]\n experimentNode.name = experiment.system_id\n .split('-')\n .slice(5, 7)\n .join('-')\n } else {\n aliquotNode.name = experiment.system_id.split('_')\n aliquotNode.name = parseInt(\n aliquotNode.name[aliquotNode.name.length - 2]\n )\n }\n aliquotNode.children.push(experimentNode)\n }\n })\n return aliquotNode\n })\n .sort((a, b) => a.name - b.name)\n return sampleNode\n })\n\n this.data = individualNode\n this.dataNodes = individualNode.children.reduce(\n (totalNodes, nodeInChildren) => {\n return totalNodes + nodeInChildren.children.length\n },\n 0\n )\n\n this.buildTree()\n this.loading = false\n }\n },\n update(source) {\n const duration = d3Event && d3Event.altKey ? 2500 : 250\n const nodes = this.root.descendants().reverse()\n const links = this.root.links()\n\n // Compute the new tree layout.\n this.tree(this.root)\n\n let left = this.root\n let right = this.root\n this.root.eachBefore(node => {\n if (node.x < left.x) left = node\n if (node.x > right.x) right = node\n })\n\n const height = right.x - left.x + this.margin.top + this.margin.bottom\n\n this.svg\n .transition()\n .duration(duration)\n .attr('height', height)\n .attr('viewBox', [\n -this.margin.left,\n left.x - this.margin.top,\n this.width,\n height\n ])\n .tween(\n 'resize',\n window.ResizeObserver ? null : () => () => this.svg.dispatch('toggle')\n )\n\n // Normalize for fixed-depth.\n nodes.forEach(d => {\n d.y = {\n individual: 0,\n sample: 135,\n aliquot: 200,\n experiment: 300\n }[d.data.class]\n })\n\n // ****************** Nodes section ***************************\n\n // Update the nodes...\n let node = this.gNode.selectAll('g').data(nodes, d => d.id)\n\n // Enter any new modes at the parent's previous position.\n let nodeEnter = node\n .enter()\n .append('g')\n .attr('class', d => `node ${d.data.class}`)\n .attr('transform', () => `translate(${source.y0},${source.x0})`)\n\n const circles = nodeEnter\n .append('circle')\n .attr('cursor', d => (d.data.class !== 'aliquot' ? 'pointer' : null))\n .attr('class', 'node shades--text')\n\n circles.style('fill', d =>\n this.treeIcons[d.data.img] ? `url(#icon-${d.data.img})` : ''\n )\n\n nodeEnter\n .on('click', this.changeModel)\n // tooltip, see https://stackoverflow.com/questions/10805184\n .on('mouseover', d => {\n if (d.data.class === 'aliquot' && d.parent.children.length < 2) return\n\n let leftPaddings = { experiment: 300, individual: 120, sample: 200 }\n this.tooltip\n .html(this.getTooltip(d))\n .style('visibility', 'visible')\n .attr('transform', `translate(${d.y},${d.x})`)\n .style('top', `${d3Event.pageY + 20}px`)\n .style('left', `${d3Event.pageX - leftPaddings[d.data.class]}px`)\n })\n .on('mouseout', () => this.tooltip.style('visibility', 'hidden'))\n\n // Add labels for the nodes\n nodeEnter\n .append('text')\n .on('click', this.onTextClick)\n .attr('dy', '.35em')\n .attr('x', -13)\n .attr('text-anchor', d => (d.children || d._children ? 'end' : 'end'))\n .text(d =>\n d.data.class === 'aliquot' && d.parent.children.length < 2\n ? ''\n : d.data.name\n )\n\n // Add collapse text to indicate node can be opened\n nodeEnter\n .append('text')\n .attr('dy', 0)\n .attr('x', 26)\n .text('...')\n .attr('class', 'collapse-text')\n\n // UPDATE\n let nodeUpdate = nodeEnter.merge(node)\n\n // Transition to the proper position for the node\n nodeUpdate\n .transition()\n .duration(this.duration)\n .attr('transform', d => `translate(${d.y},${d.x})`)\n\n // Update the node attributes and style\n nodeUpdate\n .select('.node')\n .attr('r', d => (d.data.class !== 'aliquot' ? this.nodeSize : 5))\n .attr('cx', this.nodeSize / 2)\n .attr('cy', 0)\n .attr('data-intercom-target', d => `tree-node-circle-${d.data.id}`)\n .attr('fill', d =>\n d._children && !d.children ? 'gray' : 'var(--v-primary-base)'\n )\n .attr('opacity', d =>\n d.data.class === 'aliquot' && d.parent.children.length < 2 ? 0 : 1\n )\n .style('stroke', d => {\n if (\n d.data.id === this.currentModel ||\n d.data.uuid === this.currentModel\n ) {\n this.currentNode = d\n if (!this.skipToScrollNode) {\n this.scrollToCurrentNode()\n }\n this.skipToScrollNode = false\n return 'var(--v-secondary-base)'\n }\n return 'transparent'\n })\n\n // Only show dots for collapsed and collapsible nodes\n nodeUpdate\n .select('text.collapse-text')\n .attr('visibility', d =>\n d.collapsed && d._children ? 'visible' : 'hidden'\n )\n\n // Remove any exiting nodes\n let nodeExit = node\n .exit()\n .transition()\n .duration(this.duration)\n .attr('transform', `translate(${source.y},${source.x})`)\n .remove()\n\n // On exit reduce the node circles size to 0\n nodeExit.select('.node').attr('r', 1e-6)\n\n // On exit reduce the opacity of text labels\n nodeExit.select('text').style('fill-opacity', 1e-6)\n\n // ================ links section ================\n\n // Update the links\n let link = this.gLink.selectAll('path.link').data(links, d => d.id)\n\n // Enter any new links at the parent's previous position.\n let linkEnter = link\n .enter()\n .insert('path', 'g')\n .attr('class', 'link')\n\n // UPDATE\n let linkUpdate = linkEnter.merge(link)\n\n // Transition back to the parent element position\n linkUpdate\n .transition()\n .duration(this.duration)\n .attr('d', this.diagonal)\n\n // Remove any exiting links\n link\n .exit()\n .transition()\n .duration(this.duration)\n .remove()\n\n // Store the old positions for transition.\n nodes.forEach(d => {\n d.x0 = d.x\n d.y0 = d.y\n })\n\n this.$emit('update-size')\n },\n onTextClick(d) {\n this.collapseBranch(d)\n if (!d._children && d.data.id) {\n this.$copyText(d.data.id).then(\n () => {\n this.$store.dispatch(SHOW_ALERT, {\n message: 'Copied System ID to clipboard!'\n })\n },\n () => {\n this.$store.dispatch(SHOW_ALERT, {\n error: 'System ID could not be copied to clipboard'\n })\n }\n )\n }\n },\n collapseBranch(d) {\n d.children = d.children ? null : d._children\n d.collapsed = !d.collapsed\n this.update(d)\n },\n changeModel(d) {\n if (d.data.id) {\n this.skipToScrollNode = true // don't scroll to node when click\n\n // Track individual tree usage\n window.analytics.track('Browsed Individual Tree', {\n model: d.data.class,\n record: d.data.id\n })\n\n this.tooltip.style('visibility', 'hidden')\n\n this.$store.dispatch(SHOW_PANEL, {\n bioModel: d.data.id\n })\n }\n },\n scrollToCurrentNode() {\n this.$nextTick(() => {\n if (!this.showFullHeight)\n setTimeout(() => {\n document.getElementById('tree-div').scrollTop =\n this.currentNode.x0 + 395 // 395 is a function of the max height\n }, 100) // this delay was determined kind of experimentally\n })\n },\n getTooltip(d) {\n const keyValue = (key, verboseName) => {\n let value = this.$get(d.data, key, null)\n return value === null\n ? ''\n : `\n <div class=\"layout row ma-3\" style=\"max-width: 100%\"\">\n <div class=\"flex xs5\" style=\"width: 100%\">${verboseName}</div>\n <div class=\"flex xs7\" style=\"width: 100%\"><b>${value}</b></div>\n </div>\n `\n }\n return `\n <div class=\"v-tooltip__content tree-tooltip\" style=\"min-width: 350px;\">\n ${keyValue('experiment.system_id', 'System ID')}\n ${keyValue('experiment.identifier', 'Experiment ID')}\n ${keyValue('aliquot_id', 'Aliquot ID')}\n ${keyValue('sample.identifier', 'Sample ID')}\n ${keyValue('individual.identifier', 'Individual ID')}\n ${keyValue('experiment.technique.method', 'Method')}\n ${keyValue('experiment.technique.name', 'Technique Name')}\n ${keyValue('sample.disease.acronym', 'Disease')}\n ${keyValue('individual.species', 'Species')}\n ${keyValue('individual.center.acronym', 'Center')}\n </div>\n `\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.tree-tooltip.v-tooltip__content {\n color: white;\n padding: 20px;\n opacity: 1;\n font-size: 12px;\n overflow: hidden;\n}\n.node-tooltip {\n background: rgba($color: #000000, $alpha: 0.8);\n}\n.individual-tree-div {\n overflow-x: scroll;\n margin: auto;\n .node {\n stroke-width: 3px;\n text {\n font-size: 14px;\n font-weight: 300;\n fill: black !important;\n cursor: pointer;\n &.collapse-text {\n font-size: 20px;\n font-weight: 200;\n cursor: default;\n }\n }\n &.experiment text {\n cursor: default;\n }\n }\n .link {\n fill: none;\n stroke-width: 1.5px;\n stroke: #aaa;\n }\n}\n</style>\n"]
|
|
334914
|
+
sourcesContent: ["<template>\n <v-card\n flat\n class=\"isabl-base-card\"\n data-test=\"biomodel-tree\"\n >\n <base-section-title\n :show-more=\"showTree\"\n @toggle-show-more=\"showTree = !showTree\"\n >\n <template v-slot:title>Samples Tree</template>\n <template v-slot:actions>\n <div>\n <v-btn\n v-if=\"isBigTree\"\n class=\"table-action-btn pull-right ma-0\"\n fab\n outlined\n color=\"primary\"\n @click=\"\n showFullHeight = !showFullHeight\n scrollToCurrentNode()\n \"\n >\n <v-icon color=\"primary\">{{ showFullHeight ? 'expand_less' : 'expand_more' }}</v-icon>\n </v-btn>\n </div>\n </template>\n </base-section-title>\n\n <!-- Graph -->\n <v-row\n v-show=\"showTree\"\n id=\"tree-div\"\n :style=\"showFullHeight ? '' : 'max-height: 300px;'\"\n class=\"individual-tree-div ma-0\"\n >\n <v-col class=\"individual-tree text-center pa-0 ma-0\" />\n </v-row>\n\n </v-card>\n</template>\n\n<script>\n/*\n Vue implementation of D3 Tree from:\n https://beta.observablehq.com/@asktree/interactive-tree-diagram-d3v4-v5\n*/\n\nimport { fetchIndividualTree } from '@/utils/api'\nimport { mapGetters } from 'vuex'\nimport { SHOW_ALERT } from '@/store/actions/alert'\nimport { SHOW_PANEL } from '@/store/actions/panels'\nimport BasePanel from '@/components/base/BasePanel.vue'\nimport BaseSectionTitle from '@/components/base/BaseSectionTitle'\nimport {\n tree as d3Tree,\n event as d3Event,\n select as d3Select,\n hierarchy as d3Hierarchy,\n linkHorizontal as d3linkHorizontal\n} from 'd3'\n\nexport default {\n name: 'BioModelTree',\n components: {\n BasePanel,\n BaseSectionTitle\n },\n data() {\n const { treeIcons } = this.$settings\n return {\n loading: false,\n duration: 0,\n data: null,\n root: null,\n tree: null,\n graph: null,\n species: null,\n dataNodes: null,\n showTree: true,\n isBigTree: false,\n showFullHeight: true,\n skipToScrollNode: false,\n currentNode: null,\n nodeSize: Object.keys(treeIcons).length ? 15 : 5,\n margin: { top: 20, bottom: 20, right: 0, left: 105 },\n diagonal: d3linkHorizontal()\n .x(d => d.y)\n .y(d => d.x),\n treeIcons\n }\n },\n computed: {\n ...mapGetters({\n currentModel: 'bioModelId',\n individual: 'individualId'\n })\n },\n watch: {\n individual(value, oldValue) {\n if (value !== oldValue) {\n this.fetchData()\n }\n },\n currentModel() {\n this.data && this.update(this.data)\n }\n },\n mounted() {\n this.fetchData()\n },\n methods: {\n buildTree() {\n let dx = Object.keys(this.treeIcons).length ? this.nodeSize + 4 : 18\n let dy = 0\n let iconSize = this.nodeSize\n\n // set width\n this.width = 600 - this.margin.right - this.margin.left\n this.tree = d3Tree()\n .nodeSize([dx, dy])\n .separation((a, b) => (a.parent == b.parent ? 1.75 : 2.5))\n\n // clear div\n let div = d3Select(this.$el).select('.individual-tree')\n div.selectAll('svg').remove()\n\n // create svg\n this.svg = div\n .append('svg')\n .attr('width', this.width)\n .attr('height', dx)\n .attr('viewBox', [-this.margin.left, -this.margin.top, this.width, dx])\n .style('font', '10px sans-serif')\n .style('user-select', 'none')\n\n // create filters\n this.svg\n .append('svg:filter')\n .attr('id', 'invertColor')\n .append('feColorMatrix')\n .attr('in', 'SourceGraphic')\n .attr('type', 'matrix')\n .attr('values', '-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0')\n\n // create image definitions\n const defs = this.svg.append('svg:defs')\n Object.keys(this.treeIcons).forEach(model => {\n const pattern = defs\n .append('svg:pattern')\n .attr('id', `icon-${model}`)\n .attr('width', iconSize)\n .attr('height', iconSize)\n .attr('patternUnits', 'objectBoundingBox')\n\n pattern\n .append('rect')\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('fill', 'var(--v-primary-base)')\n\n pattern\n .append('svg:image')\n .attr('xlink:href', this.treeIcons[model])\n .attr('width', iconSize)\n .attr('height', iconSize)\n .attr('x', iconSize / 2)\n .attr('y', iconSize / 2)\n .attr('filter', 'url(#invertColor)')\n })\n\n // create links\n this.gLink = this.svg\n .append('g')\n .attr('fill', 'none')\n .attr('stroke', '#555')\n .attr('stroke-opacity', 0.4)\n .attr('stroke-width', 1.5)\n\n // create tooltip\n this.tooltip = d3Select('body')\n .append('div')\n .style('position', 'absolute')\n .style('z-index', '9999')\n .style('visibility', 'hidden')\n\n // create nodes\n this.gNode = this.svg.append('g')\n\n // build root\n this.root = d3Hierarchy(this.data, d => d.children)\n this.root.x0 = dy\n this.root.y0 = 0\n this.root.descendants().forEach((d, i) => {\n d.id = i\n d.collapsed = false\n d._children = d.children\n\n // collapse samples with too many experiments\n if (d.depth !== 0 && d.children ? d.children.length > 10 : false) {\n d.children = null\n d.collapsed = true\n }\n\n // by default hide tree if too many samples\n if (d.depth === 0 && d.children && d.children.length > 10) {\n this.showFullHeight = false\n this.isBigTree = true\n }\n })\n\n this.update(this.root)\n },\n async fetchData() {\n if (this.individual) {\n this.loading = true\n let individual = await fetchIndividualTree(this.individual)\n this.species = individual.species\n\n // Format Individual Tree\n let individualNode = {}\n individualNode.id = individual.system_id\n individualNode.uuid = individual.uuid\n individualNode.name = individual.system_id\n individualNode.parent = null\n individualNode.individual = individual\n individualNode.class = 'individual'\n if (individual.species === 'MOUSE') {\n individualNode.img = 'mouse'\n } else if (individual.species === 'HUMAN') {\n if (individual.gender === 'FEMALE') {\n individualNode.img = 'female'\n } else {\n individualNode.img = 'male'\n }\n } else {\n individualNode.img = 'alien'\n }\n individualNode.children = individual.sample_set.map(sample => {\n // Samples Children\n let sampleNode = {}\n sampleNode.id = sample.system_id\n sampleNode.uuid = sample.uuid\n sampleNode.name = sample.system_id.split('_')\n sampleNode.name = sampleNode.name[sampleNode.name.length - 1]\n sampleNode.parent = individual.system_id\n sampleNode.sample = sample\n sampleNode.individual = individual\n sampleNode.class = 'sample'\n\n if (sample.category === 'TUMOR') {\n sampleNode.img = 'tumor'\n } else {\n sampleNode.img = 'normal'\n }\n\n let aliquots_ids = [\n ...new Set(sample.experiment_set.map(e => e.aliquot_id))\n ]\n\n sampleNode.children = aliquots_ids\n .map(aliquot_id => {\n // Aliquot children\n let aliquotNode = {}\n aliquotNode.aliquot_id = aliquot_id\n aliquotNode.name = ''\n aliquotNode.parent = sample.system_id\n aliquotNode.sample = sample\n aliquotNode.sampleNode = sampleNode\n aliquotNode.individual = individual\n aliquotNode.class = 'aliquot'\n aliquotNode.img = 'aliquot'\n aliquotNode.children = []\n\n sample.experiment_set.map(experiment => {\n // Experiment Children\n if (experiment.aliquot_id === aliquot_id) {\n let experimentNode = {}\n experimentNode.parent = sample.system_id\n experimentNode.sample = sample\n experimentNode.individual = individual\n experimentNode.aliquot_id = experiment.aliquot_id\n experimentNode.id = experiment.system_id\n experimentNode.uuid = experiment.uuid\n experimentNode.class = 'experiment'\n experimentNode.experiment = experiment\n\n let name = experiment.system_id.split('_')\n experimentNode.name = name[name.length - 1]\n\n if (experiment.custom_fields.is_pdx) {\n experimentNode.img = 'mouse'\n } else {\n if (experiment.technique.category === 'IMG') {\n experimentNode.img = 'image'\n } else if (experiment.technique.category === 'TISSUE') {\n experimentNode.img = 'tissue'\n if (experiment.technique.method === 'CG') {\n experimentNode.img = 'chromosome'\n }\n if (experiment.technique.method === 'HP') {\n experimentNode.img = 'tissue'\n }\n if (experiment.technique.method === 'FC') {\n experimentNode.img = 'cells'\n }\n } else if (experiment.technique.category === 'RNA') {\n experimentNode.img = 'rna'\n } else if (experiment.technique.category === 'DNA') {\n experimentNode.img = 'dna'\n } else {\n experimentNode.img = 'dna'\n }\n }\n\n // legacy leukgen ID\n if (experiment.system_id.split('-').length === 7) {\n aliquotNode.name = experiment.system_id.split('-')[4]\n experimentNode.name = experiment.system_id\n .split('-')\n .slice(5, 7)\n .join('-')\n } else {\n aliquotNode.name = experiment.system_id.split('_')\n aliquotNode.name = parseInt(\n aliquotNode.name[aliquotNode.name.length - 2]\n )\n }\n aliquotNode.children.push(experimentNode)\n }\n })\n return aliquotNode\n })\n .sort((a, b) => a.name - b.name)\n return sampleNode\n })\n\n this.data = individualNode\n this.dataNodes = individualNode.children.reduce(\n (totalNodes, nodeInChildren) => {\n return totalNodes + nodeInChildren.children.length\n },\n 0\n )\n\n this.buildTree()\n this.loading = false\n }\n },\n update(source) {\n const duration = d3Event && d3Event.altKey ? 2500 : 250\n const nodes = this.root.descendants().reverse()\n const links = this.root.links()\n\n // Compute the new tree layout.\n this.tree(this.root)\n\n let left = this.root\n let right = this.root\n this.root.eachBefore(node => {\n if (node.x < left.x) left = node\n if (node.x > right.x) right = node\n })\n\n const height = right.x - left.x + this.margin.top + this.margin.bottom\n\n this.svg\n .transition()\n .duration(duration)\n .attr('height', height)\n .attr('viewBox', [\n -this.margin.left,\n left.x - this.margin.top,\n this.width,\n height\n ])\n .tween(\n 'resize',\n window.ResizeObserver ? null : () => () => this.svg.dispatch('toggle')\n )\n\n // Normalize for fixed-depth.\n nodes.forEach(d => {\n d.y = {\n individual: 40,\n sample: 135,\n aliquot: 200,\n experiment: 300\n }[d.data.class]\n })\n\n // ****************** Nodes section ***************************\n\n // Update the nodes...\n let node = this.gNode.selectAll('g').data(nodes, d => d.id)\n\n // Enter any new modes at the parent's previous position.\n let nodeEnter = node\n .enter()\n .append('g')\n .attr('class', d => `node ${d.data.class}`)\n .attr('transform', () => `translate(${source.y0},${source.x0})`)\n\n const circles = nodeEnter\n .append('circle')\n .attr('cursor', d => (d.data.class !== 'aliquot' ? 'pointer' : null))\n .attr('class', 'node shades--text')\n\n circles.style('fill', d =>\n this.treeIcons[d.data.img] ? `url(#icon-${d.data.img})` : ''\n )\n\n nodeEnter\n .on('click', this.changeModel)\n // tooltip, see https://stackoverflow.com/questions/10805184\n .on('mouseover', d => {\n if (d.data.class === 'aliquot' && d.parent.children.length < 2) return\n\n let leftPaddings = { experiment: 300, individual: 120, sample: 200 }\n this.tooltip\n .html(this.getTooltip(d))\n .style('visibility', 'visible')\n .attr('transform', `translate(${d.y},${d.x})`)\n .style('top', `${d3Event.pageY + 20}px`)\n .style('left', `${d3Event.pageX - leftPaddings[d.data.class]}px`)\n })\n .on('mouseout', () => this.tooltip.style('visibility', 'hidden'))\n\n // Add labels for the nodes\n nodeEnter\n .append('text')\n .on('click', this.onTextClick)\n .attr('dy', '.35em')\n .attr('x', -13)\n .attr('text-anchor', d => (d.children || d._children ? 'end' : 'end'))\n .text(d =>\n d.data.class === 'aliquot' && d.parent.children.length < 2\n ? ''\n : d.data.name\n )\n\n // Add collapse text to indicate node can be opened\n nodeEnter\n .append('text')\n .attr('dy', 0)\n .attr('x', 26)\n .text('...')\n .attr('class', 'collapse-text')\n\n // UPDATE\n let nodeUpdate = nodeEnter.merge(node)\n\n // Transition to the proper position for the node\n nodeUpdate\n .transition()\n .duration(this.duration)\n .attr('transform', d => `translate(${d.y},${d.x})`)\n\n // Update the node attributes and style\n nodeUpdate\n .select('.node')\n .attr('r', d => (d.data.class !== 'aliquot' ? this.nodeSize : 5))\n .attr('cx', this.nodeSize / 2)\n .attr('cy', 0)\n .attr('data-intercom-target', d => `tree-node-circle-${d.data.id}`)\n .attr('fill', d =>\n d._children && !d.children ? 'gray' : 'var(--v-primary-base)'\n )\n .attr('opacity', d =>\n d.data.class === 'aliquot' && d.parent.children.length < 2 ? 0 : 1\n )\n .style('stroke', d => {\n if (\n d.data.id === this.currentModel ||\n d.data.uuid === this.currentModel\n ) {\n this.currentNode = d\n if (!this.skipToScrollNode) {\n this.scrollToCurrentNode()\n }\n this.skipToScrollNode = false\n return 'var(--v-secondary-base)'\n }\n return 'transparent'\n })\n\n // Only show dots for collapsed and collapsible nodes\n nodeUpdate\n .select('text.collapse-text')\n .attr('visibility', d =>\n d.collapsed && d._children ? 'visible' : 'hidden'\n )\n\n // Remove any exiting nodes\n let nodeExit = node\n .exit()\n .transition()\n .duration(this.duration)\n .attr('transform', `translate(${source.y},${source.x})`)\n .remove()\n\n // On exit reduce the node circles size to 0\n nodeExit.select('.node').attr('r', 1e-6)\n\n // On exit reduce the opacity of text labels\n nodeExit.select('text').style('fill-opacity', 1e-6)\n\n // ================ links section ================\n\n // Update the links\n let link = this.gLink.selectAll('path.link').data(links, d => d.id)\n\n // Enter any new links at the parent's previous position.\n let linkEnter = link\n .enter()\n .insert('path', 'g')\n .attr('class', 'link')\n\n // UPDATE\n let linkUpdate = linkEnter.merge(link)\n\n // Transition back to the parent element position\n linkUpdate\n .transition()\n .duration(this.duration)\n .attr('d', this.diagonal)\n\n // Remove any exiting links\n link\n .exit()\n .transition()\n .duration(this.duration)\n .remove()\n\n // Store the old positions for transition.\n nodes.forEach(d => {\n d.x0 = d.x\n d.y0 = d.y\n })\n\n this.$emit('update-size')\n },\n onTextClick(d) {\n this.collapseBranch(d)\n if (!d._children && d.data.id) {\n this.$copyText(d.data.id).then(\n () => {\n this.$store.dispatch(SHOW_ALERT, {\n message: 'Copied System ID to clipboard!'\n })\n },\n () => {\n this.$store.dispatch(SHOW_ALERT, {\n error: 'System ID could not be copied to clipboard'\n })\n }\n )\n }\n },\n collapseBranch(d) {\n d.children = d.children ? null : d._children\n d.collapsed = !d.collapsed\n this.update(d)\n },\n changeModel(d) {\n if (d.data.id) {\n this.skipToScrollNode = true // don't scroll to node when click\n\n // Track individual tree usage\n window.analytics.track('Browsed Individual Tree', {\n model: d.data.class,\n record: d.data.id\n })\n\n this.tooltip.style('visibility', 'hidden')\n\n this.$store.dispatch(SHOW_PANEL, {\n bioModel: d.data.id\n })\n }\n },\n scrollToCurrentNode() {\n this.$nextTick(() => {\n if (!this.showFullHeight)\n setTimeout(() => {\n document.getElementById('tree-div').scrollTop =\n this.currentNode.x0 + 395 // 395 is a function of the max height\n }, 100) // this delay was determined kind of experimentally\n })\n },\n getTooltip(d) {\n const keyValue = (key, verboseName) => {\n let value = this.$get(d.data, key, null)\n return value === null\n ? ''\n : `\n <div class=\"layout row ma-3\" style=\"max-width: 100%\"\">\n <div class=\"flex xs5\" style=\"width: 100%\">${verboseName}</div>\n <div class=\"flex xs7\" style=\"width: 100%\"><b>${value}</b></div>\n </div>\n `\n }\n return `\n <div class=\"v-tooltip__content tree-tooltip\" style=\"min-width: 350px;\">\n ${keyValue('experiment.system_id', 'System ID')}\n ${keyValue('experiment.identifier', 'Experiment ID')}\n ${keyValue('aliquot_id', 'Aliquot ID')}\n ${keyValue('sample.identifier', 'Sample ID')}\n ${keyValue('individual.identifier', 'Individual ID')}\n ${keyValue('experiment.technique.method', 'Method')}\n ${keyValue('experiment.technique.name', 'Technique Name')}\n ${keyValue('sample.disease.acronym', 'Disease')}\n ${keyValue('individual.species', 'Species')}\n ${keyValue('individual.center.acronym', 'Center')}\n </div>\n `\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.tree-tooltip.v-tooltip__content {\n color: white;\n padding: 20px;\n opacity: 1;\n font-size: 12px;\n overflow: hidden;\n}\n.node-tooltip {\n background: rgba($color: #000000, $alpha: 0.8);\n}\n.individual-tree-div {\n overflow-x: scroll;\n margin: auto;\n .node {\n stroke-width: 3px;\n text {\n font-size: 14px;\n font-weight: 300;\n fill: black !important;\n cursor: pointer;\n &.collapse-text {\n font-size: 20px;\n font-weight: 200;\n cursor: default;\n }\n }\n &.experiment text {\n cursor: default;\n }\n }\n .link {\n fill: none;\n stroke-width: 1.5px;\n stroke: #aaa;\n }\n}\n</style>\n"]
|
|
334950
334915
|
},
|
|
334951
334916
|
_coverageSchema: "43e27e138ebf9cfc5966b082cf9a028302ed4184",
|
|
334952
|
-
hash: "
|
|
334917
|
+
hash: "be336c38506a643b71832f44cd825ff3c922878c"
|
|
334953
334918
|
};
|
|
334954
334919
|
var coverage = global[gcv] || (global[gcv] = {});
|
|
334955
334920
|
if (coverage[path] && coverage[path].hash === hash) {
|
|
@@ -335065,7 +335030,7 @@ function BioModelTreevue_type_script_lang_js_toPrimitive(input, hint) { if (BioM
|
|
|
335065
335030
|
|
|
335066
335031
|
// set width
|
|
335067
335032
|
BioModelTreevue_type_script_lang_js_cov_2f0u9tmiep.s[11]++;
|
|
335068
|
-
this.width =
|
|
335033
|
+
this.width = 600 - this.margin.right - this.margin.left;
|
|
335069
335034
|
BioModelTreevue_type_script_lang_js_cov_2f0u9tmiep.s[12]++;
|
|
335070
335035
|
this.tree = (0,d3.tree)().nodeSize([dx, dy]).separation(function (a, b) {
|
|
335071
335036
|
BioModelTreevue_type_script_lang_js_cov_2f0u9tmiep.f[7]++;
|
|
@@ -335479,7 +335444,7 @@ function BioModelTreevue_type_script_lang_js_toPrimitive(input, hint) { if (BioM
|
|
|
335479
335444
|
BioModelTreevue_type_script_lang_js_cov_2f0u9tmiep.f[22]++;
|
|
335480
335445
|
BioModelTreevue_type_script_lang_js_cov_2f0u9tmiep.s[145]++;
|
|
335481
335446
|
d.y = {
|
|
335482
|
-
individual:
|
|
335447
|
+
individual: 40,
|
|
335483
335448
|
sample: 135,
|
|
335484
335449
|
aliquot: 200,
|
|
335485
335450
|
experiment: 300
|
|
@@ -335763,9 +335728,9 @@ function BioModelTreevue_type_script_lang_js_toPrimitive(input, hint) { if (BioM
|
|
|
335763
335728
|
});
|
|
335764
335729
|
;// CONCATENATED MODULE: ./src/components/bioModels/BioModelTree.vue?vue&type=script&lang=js&
|
|
335765
335730
|
/* harmony default export */ var bioModels_BioModelTreevue_type_script_lang_js_ = (BioModelTreevue_type_script_lang_js_);
|
|
335766
|
-
// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-64.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/bioModels/BioModelTree.vue?vue&type=style&index=0&id=
|
|
335767
|
-
var
|
|
335768
|
-
;// CONCATENATED MODULE: ./src/components/bioModels/BioModelTree.vue?vue&type=style&index=0&id=
|
|
335731
|
+
// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-64.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/bioModels/BioModelTree.vue?vue&type=style&index=0&id=337f42f6&prod&lang=scss&
|
|
335732
|
+
var BioModelTreevue_type_style_index_0_id_337f42f6_prod_lang_scss_ = __webpack_require__(82380);
|
|
335733
|
+
;// CONCATENATED MODULE: ./src/components/bioModels/BioModelTree.vue?vue&type=style&index=0&id=337f42f6&prod&lang=scss&
|
|
335769
335734
|
|
|
335770
335735
|
;// CONCATENATED MODULE: ./src/components/bioModels/BioModelTree.vue
|
|
335771
335736
|
|
|
@@ -335778,8 +335743,8 @@ var BioModelTreevue_type_style_index_0_id_2e68a456_prod_lang_scss_ = __webpack_r
|
|
|
335778
335743
|
|
|
335779
335744
|
var BioModelTree_component = normalizeComponent(
|
|
335780
335745
|
bioModels_BioModelTreevue_type_script_lang_js_,
|
|
335781
|
-
|
|
335782
|
-
|
|
335746
|
+
BioModelTreevue_type_template_id_337f42f6_render,
|
|
335747
|
+
BioModelTreevue_type_template_id_337f42f6_staticRenderFns,
|
|
335783
335748
|
false,
|
|
335784
335749
|
null,
|
|
335785
335750
|
null,
|