VelocityDataReader.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import { m as macro } from '@kitware/vtk.js/macros2.js';
  2. import DataAccessHelper from '@kitware/vtk.js/IO/Core/DataAccessHelper.js';
  3. import velocityAsciiParser from './VelocityAsciiParser.js';
  4. import '@kitware/vtk.js/IO/Core/DataAccessHelper/LiteHttpDataAccessHelper.js';
  5. // ----------------------------------------------------------------------------
  6. // VelocityDataReader methods
  7. // ----------------------------------------------------------------------------
  8. function VelocityDataReader(publicAPI, model) {
  9. // Set our className
  10. model.classHierarchy.push('velocityDataReader');
  11. // Create default dataAccessHelper if not available
  12. if (!model.dataAccessHelper) {
  13. model.dataAccessHelper = DataAccessHelper.get('http');
  14. }
  15. // Internal method to fetch Array
  16. function fetchData(url) {
  17. const {
  18. compression,
  19. progressCallback
  20. } = model;
  21. return model.dataAccessHelper.fetchText(publicAPI, url, {
  22. compression,
  23. progressCallback
  24. });
  25. }
  26. // Set DataSet url
  27. publicAPI.setUrl = function (url) {
  28. let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  29. model.url = url;
  30. // Remove the file in the URL
  31. const path = url.split('/');
  32. path.pop();
  33. model.baseURL = path.join('/');
  34. model.compression = option.compression;
  35. // Fetch metadata
  36. return publicAPI.loadData({
  37. progressCallback: option.progressCallback
  38. });
  39. };
  40. // Fetch the actual data arrays
  41. publicAPI.loadData = function () {
  42. const promise = fetchData(model.url);
  43. promise.then(publicAPI.parseAsText);
  44. return promise;
  45. };
  46. publicAPI.parseAsText = content => {
  47. if (!content) {
  48. return;
  49. }
  50. if (content !== model.parseData) {
  51. publicAPI.modified();
  52. } else {
  53. return;
  54. }
  55. model.parseData = content;
  56. model.dataModel= velocityAsciiParser.parseLegacyASCII(model.parseData);
  57. model.output[0] = model.dataModel.dataset;
  58. model.output[1] = model.dataModel.velocitys;
  59. };
  60. publicAPI.requestData = (inData, outData) => {
  61. publicAPI.parseAsText(model.parseData);
  62. };
  63. }
  64. // ----------------------------------------------------------------------------
  65. // Object factory
  66. // ----------------------------------------------------------------------------
  67. const DEFAULT_VALUES = {
  68. // baseURL: null,
  69. // dataAccessHelper: null,
  70. // url: null,
  71. };
  72. // ----------------------------------------------------------------------------
  73. function extend(publicAPI, model) {
  74. let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  75. Object.assign(model, DEFAULT_VALUES, initialValues);
  76. // Build VTK API
  77. macro.obj(publicAPI, model);
  78. macro.get(publicAPI, model, ['url', 'baseURL']);
  79. macro.setGet(publicAPI, model, ['dataAccessHelper']);
  80. macro.algo(publicAPI, model, 0, 1);
  81. // vtkPolyDataReader methods
  82. VelocityDataReader(publicAPI, model);
  83. // To support destructuring
  84. if (!model.compression) {
  85. model.compression = null;
  86. }
  87. if (!model.progressCallback) {
  88. model.progressCallback = null;
  89. }
  90. }
  91. // ----------------------------------------------------------------------------
  92. const newInstance = macro.newInstance(extend, 'VelocityDataReader');
  93. // ----------------------------------------------------------------------------
  94. var VelocityDataReader$1 = {
  95. newInstance,
  96. extend
  97. };
  98. export { VelocityDataReader$1 as default, extend, newInstance };