123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- import localForage from 'localforage';
- import axios from 'axios';
- // 单实例,避免冲突
- const materialsStore = localForage.createInstance({
- name: 'meta2d-materials',
- storeName: 'materials',
- version: 1.0,
- description: '存储的是系统组件',
- });
- // subclass - subclass
- export async function GetDBMaterials(subclass: string) {
- return materialsStore.getItem(subclass);
- }
- // subclass - subclass
- // materials - the data of subclass
- export function SetDBMaterials(subclass: string, materials: any[]) {
- return materialsStore.setItem(subclass, materials);
- }
- export function MaterialsGroup(data: any[], folders?: any[]) {
- const obj: any = {};
- if (!folders) {
- if (data.length === 0) {
- // 长度为0
- obj['Uncategorized(未分类)'] = [];
- } else {
- data.forEach((item: { folder: string }) => {
- if (!item.folder) {
- item.folder = 'Uncategorized(未分类)';
- }
- if (!obj[item.folder]) {
- obj[item.folder] = [item];
- } else {
- obj[item.folder].push(item);
- }
- });
- }
- } else {
- folders.forEach((name: string) => {
- obj[name] = [];
- });
- obj['Uncategorized(未分类)'] = [];
- data.forEach((item: { folder: string }) => {
- if (!obj[item.folder]) {
- obj['Uncategorized(未分类)'].push(item);
- } else {
- obj[item.folder].push(item);
- }
- });
- }
- const list: any[] = [];
- // tslint:disable-next-line:forin
- for (const key in obj) {
- list.push({ name: key, list: obj[key], show: true });
- }
- return list;
- }
- export async function getNetJsDiagram() {
- let arr: any[] = [
- { name: '箭头', id: 'f955205' },
- { name: '拓扑图未分类', id: '6cd3b234' },
- { name: '云', id: '406687' },
- { name: '网络设备', id: '3f264892' },
- { name: '电子产品', id: '768107e4' },
- { name: '楼宇', id: 'c109d4d' },
- { name: '物联网未分类', id: '33253fe' },
- { name: '逻辑门电路', id: '334c1c88' },
- { name: '电阻', id: '597dab3' },
- { name: '电容', id: '2181f192' },
- { name: '电感', id: '1dba554' },
- { name: '开关、转换器', id: '6b39d7ca' },
- { name: '二极管', id: '3180efea' },
- { name: '信号源', id: '6bd86063' },
- { name: '晶体管', id: '017c4d4' },
- { name: '仪表', id: '4e0df5d5' },
- { name: '电子显示设备', id: '68559dd4' },
- { name: '真空电子管', id: '181c247d' },
- { name: '电子波形', id: '42daf6' },
- { name: '转动与机械设备', id: '2a5e218e' },
- { name: '电子逻辑计算器', id: 'f9beb15' },
- { name: '电子传输/传播', id: '37f12dd3' },
- { name: '电子未分类', id: '54aa6d1' },
- { name: '液压符号', id: 'b03ed4e' },
- { name: '工具', id: '108095a' },
- ];
- globalThis.jsPensMap = {};
- const lists = await Promise.all(
- arr.map((item) => openNewMaterial(item.name, item))
- );
- arr.forEach((item, index) => {
- item.list = lists[index];
- item.show = true;
- });
- return arr;
- }
- async function openNewMaterial(subclass: string, group) {
- // const [{ GetDBMaterials, SetDBMaterials }] = await Promise.all([
- // import('../services/material'),
- // ]);
- let materials: any = await GetDBMaterials(subclass);
- if (!materials || !materials.length) {
- materials = await axios.get('/api/tools', {
- params: {
- subClass: (group as any).id,
- pageCount: 1000,
- },
- });
- if (materials) {
- SetDBMaterials(group.name, materials);
- }
- }
- // const newList: any[] = [];
- materials.forEach((material: any) => {
- if (!material.fullname) {
- // fullname 不存在,采用其他方式
- // newList.push(material);
- } else {
- // newList.push({
- // subClassName: material.subClassName,
- // id: material.id,
- // name: material.name,
- // fullname: material.fullname,
- // data: material.data,
- // svg: material.svg,
- // });
- }
- globalThis.jsPensMap[material.fullname] = material.svg;
- });
- // (window as any).meta2dTools = materials;
- // (window as any).registerToolsNew();
- // (window as any).meta2dTools = undefined;
- // return newList;
- }
|