def _get_data_set_urls(self, list_of_timeseries, is_preview=False): """ Returns a list of lists. Each list contains the urls to the files containing the data for a certain array wrapper. """ base_urls = [] time_set_urls = [] total_pages_set = [] if is_preview is False: page_size = self.page_size for timeseries in list_of_timeseries: overall_shape = timeseries.read_data_shape() total_pages = overall_shape[0] // self.page_size if overall_shape[0] % self.page_size > 0: total_pages += 1 timeline_urls = [] ts_gid = timeseries.gid.load().hex for i in range(total_pages): current_max_size = min((i + 1) * self.page_size, overall_shape[0]) - i * self.page_size params = "current_page=" + str(i) + ";page_size=" + str(self.page_size) + \ ";max_size=" + str(current_max_size) timeline_urls.append(URLGenerator.build_h5_url(ts_gid, 'read_time_page', parameter=params)) base_urls.append(URLGenerator.build_base_h5_url(ts_gid)) time_set_urls.append(timeline_urls) total_pages_set.append(total_pages) else: ts_gid = list_of_timeseries[0].gid.load().hex base_urls.append(URLGenerator.build_base_h5_url(ts_gid)) total_pages_set.append(1) page_size = self.preview_page_size params = "current_page=0;page_size=" + str(self.preview_page_size) + ";max_size=" + \ str(min(self.preview_page_size, list_of_timeseries[0].read_data_shape()[0])) time_set_urls.append([URLGenerator.build_h5_url(ts_gid, 'read_time_page', parameter=params)]) return base_urls, page_size, total_pages_set, time_set_urls
def _launch(self, view_model, figsize, preview=False): time_series_index = self.load_entity_by_gid(view_model.time_series) h5_file = h5.h5_file_for_index(time_series_index) assert isinstance(h5_file, TimeSeriesH5) shape = list(h5_file.read_data_shape()) ts = h5_file.storage_manager.get_data('time') state_variables = time_series_index.get_labels_for_dimension(1) labels = self.get_space_labels(h5_file) # Assume that the first dimension is the time since that is the case so far if preview and shape[0] > self.MAX_PREVIEW_DATA_LENGTH: shape[0] = self.MAX_PREVIEW_DATA_LENGTH # when surface-result, the labels will be empty, so fill some of them, # but not all, otherwise the viewer will take ages to load. if shape[2] > 0 and len(labels) == 0: for n in range(min(self.MAX_PREVIEW_DATA_LENGTH, shape[2])): labels.append("Node-" + str(n)) pars = {'baseURL': URLGenerator.build_base_h5_url(time_series_index.gid), 'labels': labels, 'labels_json': json.dumps(labels), 'ts_title': time_series_index.title, 'preview': preview, 'figsize': figsize, 'shape': repr(shape), 't0': ts[0], 'dt': ts[1] - ts[0] if len(ts) > 1 else 1, 'labelsStateVar': state_variables, 'labelsModes': list(range(shape[3])) } pars.update(self.build_params_for_subselectable_ts(h5_file)) h5_file.close() return self.build_display_result("time_series/view", pars, pages=dict(controlPage="time_series/control"))