61 this.materialNames = [];
66 let params =
new URLSearchParams({
73 url +=
'?' + params.toString();
76 let haveMoreMaterials =
true;
77 while (haveMoreMaterials)
81 console.log(
'- Fetch material infoormation from url:', url)
83 const response = await fetch(url);
86 throw new Error(`HTTP error! status: ${response.status}`);
89 const jsonData = await response.json();
90 this.materials.push(jsonData)
92 for (
const material of jsonData.results) {
93 this.materialNames.push(material[
'title']);
98 let nextURL = jsonData.next
102 haveMoreMaterials =
true
106 console.log(
'Finished fetching materials')
107 haveMoreMaterials =
false;
112 this.logger.info(`Error: ${error.message}`);
113 haveMoreMaterials =
true;
117 return this.materials;
128 if (this.materials ===
null || this.materials.length === 0) {
129 console.error(
'No materials available. Please fetch materials first.');
133 const jsonData = this.materials[listNumber];
135 console.error(
'Invalid list number:', listNumber);
139 let jsonResults =
null;
140 let jsonResult =
null;
141 if (
'results' in jsonData) {
142 jsonResults = jsonData[
'results'];
143 if (jsonResults.length <= materialNumber) {
144 console.error(
'Invalid material number:', materialNumber);
147 jsonResult = jsonResults[materialNumber];
152 console.error(
'Material not found for list number:', listNumber,
' material number:', materialNumber);
156 let jsonPackages =
null;
157 if (
'packages' in jsonResult) {
158 jsonPackages = jsonResult[
'packages'];
161 console.error(
'No packages found for material:', jsonResult[
'title']);
165 if (jsonPackages.length <= packageId) {
166 console.error(
'Invalid package ID:', packageId,
' for material:', jsonResult[
'title']);
169 const packageIdValue = jsonPackages[packageId];
171 if (!packageIdValue) {
172 console.error(
'Package ID not found for material:', jsonResult[
'title'],
' package index:', packageId);
176 const url = `${this.packageUrl}/${packageIdValue}/download`;
177 const response = await fetch(url);
178 const data = await response.arrayBuffer();
179 const title = jsonResult[
'title'];
181 console.log(`- Loader: Downloaded package: ${title} from ${url}`);
182 return [data, title];
234 const downloadList = [];
237 if (foundList.length > 0) {
238 for (
const found of foundList) {
239 const listNumber = found[
'listNumber'];
240 const materialNumber = found[
'materialNumber'];
241 const matName = found[
'title'];
242 this.logger.info(`> Download material: ${matName} List: ${listNumber}. Index: ${materialNumber}`);
243 const [data, title] = await this.
downloadPackage(listNumber, materialNumber, packageId);
244 downloadList.push([data, title]);