implemented model list
This commit is contained in:
		@@ -32,6 +32,7 @@ import { ServiceWorkerModule } from '@angular/service-worker';
 | 
				
			|||||||
import { environment } from '../environments/environment';
 | 
					import { environment } from '../environments/environment';
 | 
				
			||||||
import { HelpComponent } from './help/help.component';
 | 
					import { HelpComponent } from './help/help.component';
 | 
				
			||||||
import { ModelTemplatesComponent } from './model-templates/model-templates.component';
 | 
					import { ModelTemplatesComponent } from './model-templates/model-templates.component';
 | 
				
			||||||
 | 
					import { SizePipe } from './size.pipe';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
  declarations: [
 | 
					  declarations: [
 | 
				
			||||||
@@ -54,7 +55,8 @@ import { ModelTemplatesComponent } from './model-templates/model-templates.compo
 | 
				
			|||||||
    DocumentationDatabaseComponent,
 | 
					    DocumentationDatabaseComponent,
 | 
				
			||||||
    PredictionComponent,
 | 
					    PredictionComponent,
 | 
				
			||||||
    HelpComponent,
 | 
					    HelpComponent,
 | 
				
			||||||
    ModelTemplatesComponent
 | 
					    ModelTemplatesComponent,
 | 
				
			||||||
 | 
					    SizePipe
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  imports: [
 | 
					  imports: [
 | 
				
			||||||
    LocalStorageModule.forRoot({
 | 
					    LocalStorageModule.forRoot({
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@
 | 
				
			|||||||
  </rb-icon-button>
 | 
					  </rb-icon-button>
 | 
				
			||||||
</form>
 | 
					</form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<rb-table class="space-above">
 | 
					<rb-table class="space-above space-below">
 | 
				
			||||||
  <tr>
 | 
					  <tr>
 | 
				
			||||||
    <th>Name</th>
 | 
					    <th>Name</th>
 | 
				
			||||||
    <th>URL</th>
 | 
					    <th>URL</th>
 | 
				
			||||||
@@ -49,14 +49,27 @@
 | 
				
			|||||||
      </td>
 | 
					      </td>
 | 
				
			||||||
      <td>
 | 
					      <td>
 | 
				
			||||||
        <span class="rb-ic rb-ic-delete clickable"
 | 
					        <span class="rb-ic rb-ic-delete clickable"
 | 
				
			||||||
              (click)="deleteModel(group.group, modelItem.name, modalDeleteConfirm)"></span>
 | 
					              (click)="delete(modalDeleteConfirm, modelItem.name, group.group)"></span>
 | 
				
			||||||
      </td>
 | 
					      </td>
 | 
				
			||||||
    </tr>
 | 
					    </tr>
 | 
				
			||||||
  </ng-container>
 | 
					  </ng-container>
 | 
				
			||||||
</rb-table>
 | 
					</rb-table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<rb-table>
 | 
				
			||||||
 | 
					  <tr>
 | 
				
			||||||
 | 
					    <th>Model files</th>
 | 
				
			||||||
 | 
					    <th></th>
 | 
				
			||||||
 | 
					    <th></th>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					  <tr *ngFor="let file of d.arr.modelFiles">
 | 
				
			||||||
 | 
					    <td>{{file.name}}</td>
 | 
				
			||||||
 | 
					    <td>{{file.size | size:'M'}}</td>
 | 
				
			||||||
 | 
					    <td><span class="rb-ic rb-ic-delete clickable" (click)="delete(modalDeleteConfirm, file.name)"></span></td>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					</rb-table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<ng-template #modalDeleteConfirm>
 | 
					<ng-template #modalDeleteConfirm>
 | 
				
			||||||
  <rb-alert alertTitle="Are you sure?" type="danger" okBtnLabel="Delete model" cancelBtnLabel="Cancel">
 | 
					  <rb-alert alertTitle="Are you sure?" type="danger" okBtnLabel="Delete model" cancelBtnLabel="Cancel">
 | 
				
			||||||
    Do you really want to delete this model?
 | 
					    Do you really want to delete?
 | 
				
			||||||
  </rb-alert>
 | 
					  </rb-alert>
 | 
				
			||||||
</ng-template>
 | 
					</ng-template>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,13 +35,14 @@ export class ModelTemplatesComponent implements OnInit {
 | 
				
			|||||||
    this.d.load('modelGroups', () => {
 | 
					    this.d.load('modelGroups', () => {
 | 
				
			||||||
      this.groups = this.d.arr.modelGroups.map(e => e.group);
 | 
					      this.groups = this.d.arr.modelGroups.map(e => e.group);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					    this.d.load('modelFiles');
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  saveModel() {
 | 
					  saveModel() {
 | 
				
			||||||
    console.log(this.modelGroup);
 | 
					    console.log(this.modelGroup);
 | 
				
			||||||
    console.log(this.oldModelGroup);
 | 
					    console.log(this.oldModelGroup);
 | 
				
			||||||
    if (this.oldModelGroup !== '' && this.modelGroup !== this.oldModelGroup) {  // group was changed, delete model in old group
 | 
					    if (this.oldModelGroup !== '' && this.modelGroup !== this.oldModelGroup) {  // group was changed, delete model in old group
 | 
				
			||||||
      this.deleteModel(this.oldModelGroup, this.oldModelName);
 | 
					      this.deleteModel(null, this.oldModelGroup, this.oldModelName);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    this.api.post('/model/' + this.modelGroup, this.model, () => {
 | 
					    this.api.post('/model/' + this.modelGroup, this.model, () => {
 | 
				
			||||||
      this.newModel = false;
 | 
					      this.newModel = false;
 | 
				
			||||||
@@ -53,7 +54,7 @@ export class ModelTemplatesComponent implements OnInit {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  deleteModel(group, name, modal = null) {
 | 
					  delete(modal, name, group = null) {
 | 
				
			||||||
    new Promise(resolve => {
 | 
					    new Promise(resolve => {
 | 
				
			||||||
      if (modal) {
 | 
					      if (modal) {
 | 
				
			||||||
        this.modal.open(modal).then(result => {
 | 
					        this.modal.open(modal).then(result => {
 | 
				
			||||||
@@ -65,10 +66,17 @@ export class ModelTemplatesComponent implements OnInit {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }).then(res => {
 | 
					    }).then(res => {
 | 
				
			||||||
      if (res) {
 | 
					      if (res) {
 | 
				
			||||||
 | 
					        if (group) {  // delete group
 | 
				
			||||||
          this.api.delete(`/model/${group}/${name}`, () => {
 | 
					          this.api.delete(`/model/${group}/${name}`, () => {
 | 
				
			||||||
            this.loadGroups();
 | 
					            this.loadGroups();
 | 
				
			||||||
          });
 | 
					          });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        else {  // delete file
 | 
				
			||||||
 | 
					          this.api.delete(`/model/file/${name}`, () => {
 | 
				
			||||||
 | 
					            this.d.arr.modelFiles.splice(this.d.arr.modelFiles.findIndex(e => e.name === name), 1);
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								src/app/models/model-file.model.spec.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/app/models/model-file.model.spec.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					import { ModelFileModel } from './model-file.model';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('ModelFile.Model', () => {
 | 
				
			||||||
 | 
					  it('should create an instance', () => {
 | 
				
			||||||
 | 
					    expect(new ModelFileModel()).toBeTruthy();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										6
									
								
								src/app/models/model-file.model.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/app/models/model-file.model.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					import {BaseModel} from './base.model';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class ModelFileModel extends BaseModel {
 | 
				
			||||||
 | 
					  name = '';
 | 
				
			||||||
 | 
					  size = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -5,6 +5,7 @@ import {MaterialModel} from '../models/material.model';
 | 
				
			|||||||
import {BaseModel} from '../models/base.model';
 | 
					import {BaseModel} from '../models/base.model';
 | 
				
			||||||
import {UserModel} from '../models/user.model';
 | 
					import {UserModel} from '../models/user.model';
 | 
				
			||||||
import {ModelItemModel} from '../models/model-item.model';
 | 
					import {ModelItemModel} from '../models/model-item.model';
 | 
				
			||||||
 | 
					import {ModelFileModel} from '../models/model-file.model';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Injectable({
 | 
					@Injectable({
 | 
				
			||||||
  providedIn: 'root'
 | 
					  providedIn: 'root'
 | 
				
			||||||
@@ -25,6 +26,7 @@ export class DataService {
 | 
				
			|||||||
    sampleNotesFields: {path: '/sample/notes/fields', model: TemplateModel, type: 'idArray'},
 | 
					    sampleNotesFields: {path: '/sample/notes/fields', model: TemplateModel, type: 'idArray'},
 | 
				
			||||||
    users: {path: '/users', model: UserModel, type: 'idArray'},
 | 
					    users: {path: '/users', model: UserModel, type: 'idArray'},
 | 
				
			||||||
    modelGroups: {path: '/model/groups', model: ModelItemModel, type: 'array'},
 | 
					    modelGroups: {path: '/model/groups', model: ModelItemModel, type: 'array'},
 | 
				
			||||||
 | 
					    modelFiles: {path: '/model/files', model: ModelFileModel, type: 'array'},
 | 
				
			||||||
    user: {path: '/user', model: UserModel, type: 'string'},
 | 
					    user: {path: '/user', model: UserModel, type: 'string'},
 | 
				
			||||||
    userKey: {path: '/user/key', model: BaseModel, type: 'string'}
 | 
					    userKey: {path: '/user/key', model: BaseModel, type: 'string'}
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								src/app/size.pipe.spec.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/app/size.pipe.spec.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					import { SizePipe } from './size.pipe';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('SizePipe', () => {
 | 
				
			||||||
 | 
					  it('create an instance', () => {
 | 
				
			||||||
 | 
					    const pipe = new SizePipe();
 | 
				
			||||||
 | 
					    expect(pipe).toBeTruthy();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										16
									
								
								src/app/size.pipe.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/app/size.pipe.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					import { Pipe, PipeTransform } from '@angular/core';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Pipe({
 | 
				
			||||||
 | 
					  name: 'size'
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class SizePipe implements PipeTransform {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  transform(value: number, exp: string): string {
 | 
				
			||||||
 | 
					    const divide = ['', 'k', 'M', 'G', 'T'].indexOf(exp);
 | 
				
			||||||
 | 
					    for (let i = 0; i < divide; i ++) {
 | 
				
			||||||
 | 
					      value = value / 1024;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return `${value.toFixed(2)} ${exp}B`;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user