{"version":3,"file":"liangdi-metamodeling-service.mjs","sources":["../../../../projects/liangdi/metamodeling-service/src/lib/metamodeling-service.module.ts","../../../../projects/liangdi/metamodeling-service/src/lib/api/api.ts","../../../../projects/liangdi/metamodeling-service/src/lib/service/api.service.ts","../../../../projects/liangdi/metamodeling-service/src/lib/service/metamodeling.service.ts","../../../../projects/liangdi/metamodeling-service/src/index.ts","../../../../projects/liangdi/metamodeling-service/src/liangdi-metamodeling-service.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n@NgModule({\n  declarations: [],\n  imports: [\n  ],\n  exports: []\n})\nexport class MetamodelingServiceModule { }\n","import { ApiService } from './../service/api.service';\nimport { MetamodelingService } from './../service/metamodeling.service';\nimport {of, Observable} from 'rxjs';\n\nexport interface QueryParam {\n  query?: any;\n  sort?: string;\n  keyword?: string;\n  search?: string;\n}\n\nexport abstract class BaseApi {\n    /**\n     * 模型 API 接口地址\n     */\n    protected apiUrl: string;\n    /**\n     * 模型 java 类名\n     */\n    protected modelCls = '';\n    init() {\n    }\n\n    constructor(protected api: ApiService,\n                protected metaService: MetamodelingService\n    ) {\n      this.init();\n    }\n\n    query(params?): Observable<any> {\n      return this.api.get(this.apiUrl + '/query', params);\n    }\n    /**\n     * 分页查询\n     * @param page 分页，从 1 开始\n     * @param pageSize 分页大小\n     */\n    page(page: number, pageSize: number, query?: any, sort?: any, keyword?: any): Observable<any> {\n      if (page <= 0 ) {\n        page = 1;\n      }\n      if (pageSize <= 0) {\n        pageSize = 1;\n      }\n      const params: QueryParam =  {\n      };\n      if (query) {\n        params.query = query;\n      }\n      if (sort) {\n        params.sort = sort;\n      }\n\n      if (keyword) {\n        params.keyword = keyword;\n      }\n\n      console.log('page params:', params);\n      return this.api.get(this.apiUrl + '/page/' + page + '/' + pageSize, params);\n    }\n    /**\n     * 添加对象\n     * @param bean 对象值\n     */\n    add(bean): Observable<any> {\n      return this.api.post(this.apiUrl + '/add', bean);\n\n    }\n    /**\n     * 更新对象信息\n     * @param bean 对象值，需要有 uuid 字段\n     */\n    update(bean): Observable<any> {\n      return this.api.post(this.apiUrl + '/update', bean);\n\n    }\n    /**\n     * 删除对象信息\n     * @param uuid 对象 uuid\n     */\n    delete(uuid): Observable<any> {\n\n      return this.api.get(this.apiUrl + '/delete/' + uuid);\n    }\n    /**\n     * 根据 uuid 获取指定对象\n     * @param uuid 对象 uuid\n     */\n    get(uuid): Observable<any> {\n      return  this.api.get(this.apiUrl + '/get/' + uuid);\n    }\n\n    export(type, query?: any, sort?: any, keyword?: any) {\n      this.api.download(this.apiUrl + `/export?type=${type}&query=${JSON.stringify(query)}&sort=${sort}&keyword=${keyword}` );\n    }\n    /**\n     * 对象类型元数据信息\n     *\n     */\n    meta(): Observable<any> {\n       if (this.modelCls === '') {\n          return of(null);\n       } else {\n         return this.metaService.desc(this.modelCls);\n       }\n\n    }\n\n  }\n","import { Injectable, Inject, InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpParams, HttpClient } from '@angular/common/http';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiService {\n  public urlPrefix;\n  public siteUrlPrefix\n  constructor(\n    private http: HttpClient\n  ) {\n    // console.log(`api service urPrefix: ${this.urlPrefix}`);\n   }\n\n  staticGet(url: string) {\n    return this.http.get(this.siteUrlPrefix + url, {\n      withCredentials: true\n    });\n  }\n\n  customGet(url: string, path: string, params?: any): Observable<any> {\n    if (params && params.query) {\n      params.query = JSON.stringify(params.query);\n    }\n    const p = new HttpParams({\n      fromObject: params\n    });\n\n    return this.http.get(`${this.urlPrefix}${url}/${path}`, {\n      params: p,\n      withCredentials: true\n    });\n  }\n\n  customPost(url: string, path: string, body?: any, params?: any): Observable<any> {\n    if (params && params.query) {\n      params.query = JSON.stringify(params.query);\n    }\n    const p = new HttpParams({\n      fromObject: params\n    });\n\n    return this.http.post(`${this.urlPrefix}${url}/${path}`, body, {\n      params: p,\n      withCredentials: true\n    });\n  }\n\n  get(url: string, params?: any): Observable<any> {\n    if (params && params.query) {\n      params.query = JSON.stringify(params.query);\n    }\n    const p = new HttpParams({\n      fromObject: params\n    });\n\n\n    // console.log(`api get: ${url}`,p)\n    return this.http.get(this.urlPrefix + url, {\n      params: p,\n      withCredentials: true\n    });\n  }\n\n  post(url: string, body?: any, params?: any): Observable<any> {\n    return this.http.post(this.urlPrefix + url, body, {\n      params,\n      withCredentials: true\n    });\n  }\n  download(url) {\n    window.open(this.urlPrefix + url, '_blank');\n  }\n\n}\n","import { QueryParam } from './../api/api';\nimport {Injectable} from '@angular/core';\nimport {Observable, of} from 'rxjs';\n\nimport {ApiService} from './api.service';\n\n\n@Injectable({providedIn: 'root'})\nexport class MetamodelingService {\n  apiUrl = 'api/meta/';\n\n  modelMap = {};\n  constructor(private apiService: ApiService) {\n  }\n\n  promiseInit(): Promise<any> {\n    return new Promise<void>((resolve, reject) => {\n        this.list().subscribe(res => {\n          console.log('init meta data:',res.list);\n          if (res.success) {\n            const list = res.list;\n            list.forEach(element => {\n              this.modelMap[element.class.cls] = element;\n            });\n\n            resolve();\n\n          }\n        }, () => {\n          // reject();\n          resolve();\n        });\n    });\n  }\n\n  async init() {\n    const result = await this.list().toPromise();\n    console.log('met init:', result);\n\n    if (result.success) {\n      const list = result.list;\n      list.forEach(element => {\n        this.modelMap[element.class.cls] = element;\n      });\n      // console.log('load meta data finished:', this.modelMap);\n    }\n  }\n\n  /**\n   * 获取所有类的元数据\n   */\n  list(): Observable<any> {\n    return this.apiService.get(this.apiUrl + 'model/list');\n  }\n\n  getModelMap() {\n    return this.modelMap;\n  }\n  /**\n   * 获取单个类的元数据\n   * @param cls java 模型类名\n   */\n  desc(cls: string): Observable<any> {\n    if (this.modelMap[cls]) {\n      return of(this.modelMap[cls]);\n    }\n    return this.apiService.get(this.apiUrl + 'model/desc', {cls});\n  }\n\n  /**\n   * 查询\n   * @param cls  java 类名\n   * @param query 查询参数\n   *     {\n   *       field: value,\n   *       field2: value2\n   *    }\n   * @param sort 排序参数\n   *    field:ASC,field2:DESC\n   * @param keyword 查询关键字\n   */\n  query(cls: string, query?: any, sort?: any, keyword?: any): Observable<any> {\n    const params: QueryParam = {};\n    if (query) {\n      params.query = query;\n    }\n    if (sort) {\n      params.sort = sort;\n    }\n\n    if (keyword) {\n      params.keyword = keyword;\n    }\n\n\n    // console.log('call query:',cls)\n    return this.apiService.get(\n        this.modelMap[cls].class.url + '/query', params);\n  }\n\n  /**\n   * 分页查询\n   * @param page 分页，从 1 开始\n   * @param pageSize 分页大小\n   */\n  page(\n      cls: string, page: number, pageSize: number, query?: any, sort?: any,\n      keyword?: any, search?: any): Observable<any> {\n    if (page <= 0) {\n      page = 1;\n    }\n    if (pageSize <= 0) {\n      pageSize = 1;\n    }\n    const params: QueryParam = {};\n    if (query) {\n      params.query = query;\n    }\n    if (sort) {\n      params.sort = sort;\n    }\n\n    if (keyword) {\n      params.keyword = keyword;\n    }\n\n    if (search) {\n      params.search = search;\n    }\n\n    return this.apiService.get(\n        this.modelMap[cls].class.url + '/page/' + page + '/' + pageSize,\n        params);\n  }\n  /**\n   * 添加对象\n   * @param bean 对象值\n   */\n  add(cls: string, bean): Observable<any> {\n\n    return this.apiService.post(\n        this.modelMap[cls].class.url + '/add', bean);\n  }\n  /**\n   * 更新对象信息\n   * @param bean 对象值，需要有 uuid 字段\n   */\n  update(cls: string, bean): Observable<any> {\n\n    return this.apiService.post(\n        this.modelMap[cls].class.url + '/update', bean);\n  }\n  /**\n   * 删除对象信息\n   * @param uuid 对象 uuid\n   */\n  delete(cls: string, uuid: string): Observable<any> {\n\n    return this.apiService.get(\n        this.modelMap[cls].class.url + '/delete/' + uuid);\n  }\n  /**\n   * 自定义 get 调用\n   * @param cls\n   * @param path\n   * @param params\n   */\n  customGet(cls: string, path: string, params?: any): Observable<any> {\n\n    return this.apiService.customGet(\n        this.modelMap[cls].class.url, path, params);\n  }\n  /**\n   * 自定义 post 调用\n   * @param cls\n   * @param path\n   * @param body\n   * @param params\n   */\n  customPost(cls: string, path: string, body?: any, params?: any):\n      Observable<any> {\n\n    return this.apiService.customPost(\n        this.modelMap[cls].class.url, path, body, params);\n  }\n  /**\n   * 根据 uuid 获取指定对象\n   * @param cls class\n   * @param uuid 对象 uuid\n   */\n  get(cls: string, uuid: string): Observable<any> {\n\n    return this.apiService.get(\n        this.modelMap[cls].class.url + '/get/' + uuid);\n  }\n  /**\n   *\n   * @param cls Class\n   * @param type 导出类型\n   * @param query 查询条件\n   * @param sort 排序条件\n   * @param keyword 关键字\n   */\n  export(cls, type, query?: any, sort?: any, keyword?: any) {\n    let q = query ? JSON.stringify(query) : '';\n    q = encodeURIComponent(q);\n    console.log(\n        'url:',\n        this.modelMap[cls].class.url +\n            `/export?type=${type}&query=${q}&sort=${sort}&keyword=${keyword}`);\n\n    console.log('sort:', sort);\n    this.apiService.download(\n        this.modelMap[cls].class.url +\n        `/export?type=${type}&query=${q}&sort=${sort}&keyword=${keyword}`);\n  }\n\n  uploadBase64Img(query, file) {\n    return this.apiService.post(\n        `api/fs/file/upload_image_by_base64`, file, query);\n  }\n}\n","/*\n * Public API Surface of metamodeling-service\n */\n\nexport * from './lib/metamodeling-service.module';\nexport * from './lib/api/api';\nexport * from './lib/service/api.service';\nexport * from './lib/service/metamodeling.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}