Skip to content
Snippets Groups Projects
Commit b19d151e authored by François Agneray's avatar François Agneray
Browse files

Metamodel module work in progress

parent d493574a
No related branches found
No related tags found
No related merge requests found
Showing
with 247 additions and 7 deletions
...@@ -11,6 +11,8 @@ import { StoreRouterConnectingModule } from '@ngrx/router-store'; ...@@ -11,6 +11,8 @@ import { StoreRouterConnectingModule } from '@ngrx/router-store';
import { StoreDevtoolsModule } from '@ngrx/store-devtools'; import { StoreDevtoolsModule } from '@ngrx/store-devtools';
import { environment } from '../environments/environment'; import { environment } from '../environments/environment';
import { reducers, metaReducers } from './app.reducer';
import { CustomSerializer } from './custom-route-serializer';
import { MetamodelModule } from './metamodel/metamodel.module'; import { MetamodelModule } from './metamodel/metamodel.module';
@NgModule({ @NgModule({
...@@ -22,10 +24,26 @@ import { MetamodelModule } from './metamodel/metamodel.module'; ...@@ -22,10 +24,26 @@ import { MetamodelModule } from './metamodel/metamodel.module';
BrowserAnimationsModule, BrowserAnimationsModule,
HttpClientModule, HttpClientModule,
AppRoutingModule, AppRoutingModule,
StoreModule.forRoot(reducers, {
metaReducers,
runtimeChecks: {
strictStateImmutability: true,
strictActionImmutability: true,
strictStateSerializability: true,
strictActionSerializability: true,
strictActionWithinNgZone: true,
strictActionTypeUniqueness: true,
}
}),
EffectsModule.forRoot([]), EffectsModule.forRoot([]),
StoreModule.forRoot({}, {}), StoreRouterConnectingModule.forRoot({
StoreRouterConnectingModule.forRoot(), serializer: CustomSerializer
StoreDevtoolsModule.instrument({ maxAge: 25, logOnly: environment.production }), }),
StoreDevtoolsModule.instrument({
name: 'ANIS',
maxAge: 25,
logOnly: environment.production
}),
MetamodelModule MetamodelModule
], ],
providers: [], providers: [],
......
import { ActionReducerMap, ActionReducer, MetaReducer } from '@ngrx/store';
import { RouterReducerState, routerReducer } from '@ngrx/router-store';
export interface State {
router: RouterReducerState<any>;
}
export const reducers: ActionReducerMap<State> = {
router: routerReducer
};
// console.log all actions
export function debug(reducer: ActionReducer<any>): ActionReducer<any> {
return function(state, action) {
console.group(action.type);
const nextState = reducer(state, action);
console.log(`%c prev state`, `color: #9E9E9E; font-weight: bold`, state);
console.log(`%c action`, `color: #03A9F4; font-weight: bold`, action);
console.log(`%c next state`, `color: #4CAF50; font-weight: bold`, nextState);
console.groupEnd();
return nextState;
};
}
export const metaReducers: MetaReducer<any>[] = [debug];
import { Params, RouterStateSnapshot } from '@angular/router';
import { RouterStateSerializer } from '@ngrx/router-store';
export interface RouterStateUrl {
url: string;
params: Params;
queryParams: Params;
}
export class CustomSerializer implements RouterStateSerializer<RouterStateUrl> {
serialize(routerState: RouterStateSnapshot): RouterStateUrl {
let route = routerState.root;
while (route.firstChild) {
route = route.firstChild;
}
const {
url,
root: { queryParams },
} = routerState;
const { params } = route;
// Only return an object including the URL, params and query params
// instead of the entire snapshot
return { url, params, queryParams };
}
}
\ No newline at end of file
...@@ -4,7 +4,7 @@ import { CommonModule } from '@angular/common'; ...@@ -4,7 +4,7 @@ import { CommonModule } from '@angular/common';
import { StoreModule } from '@ngrx/store'; import { StoreModule } from '@ngrx/store';
import { EffectsModule } from '@ngrx/effects'; import { EffectsModule } from '@ngrx/effects';
import { reducer } from './store/reducers'; import { metamodelReducer } from './store/reducers';
import { metamodelEffects } from './store/effects'; import { metamodelEffects } from './store/effects';
import { metamodelServices} from './store/services'; import { metamodelServices} from './store/services';
...@@ -12,7 +12,7 @@ import { metamodelServices} from './store/services'; ...@@ -12,7 +12,7 @@ import { metamodelServices} from './store/services';
declarations: [], declarations: [],
imports: [ imports: [
CommonModule, CommonModule,
StoreModule.forFeature('metamodel', reducer), StoreModule.forFeature('metamodel', metamodelReducer),
EffectsModule.forFeature(metamodelEffects) EffectsModule.forFeature(metamodelEffects)
], ],
providers: [ providers: [
......
import { createAction, props } from '@ngrx/store';
import { Attribute } from '../models';
export const loadAttributeList = createAction('[Metamodel] Load Attribute List');
export const loadAttributeListSuccess = createAction('[Metamodel] Load Attribute List Success', props<{ attributes: Attribute[] }>());
export const loadAttributeListFail = createAction('[Metamodel] Load Attribute List Fail');
import { createAction, props } from '@ngrx/store';
import { CriteriaFamily } from '../models';
export const loadCriteriaFamilyList = createAction('[Metamodel] Load Criteria Family List');
export const loadCriteriaFamilyListSuccess = createAction('[Metamodel] Load Criteria Family List Success', props<{ criteriaFamilies: CriteriaFamily[] }>());
export const loadCriteriaFamilyListFail = createAction('[Metamodel] Load Criteria Family List Fail');
import { createAction, props } from '@ngrx/store'; import { createAction, props } from '@ngrx/store';
import { Database } from '../models/database.model'; import { Database } from '../models';
export const selectDatabase = createAction('[Metamodel] Select Database', props<{ databaseId: number }>()); export const selectDatabase = createAction('[Metamodel] Select Database', props<{ databaseId: number }>());
export const loadDatabaseList = createAction('[Metamodel] Load Database List'); export const loadDatabaseList = createAction('[Metamodel] Load Database List');
......
import { createAction, props } from '@ngrx/store';
import { DatasetFamily } from '../models';
export const loadDatasetFamilyList = createAction('[Metamodel] Load Dataset Family List');
export const loadDatasetFamilyListSuccess = createAction('[Metamodel] Load Dataset Family List Success', props<{ datasetFamilies: DatasetFamily[] }>());
export const loadDatasetFamilyListFail = createAction('[Metamodel] Load Dataset Family List Fail');
import { createAction, props } from '@ngrx/store';
import { Dataset } from '../models';
export const loadDatasetList = createAction('[Metamodel] Load Dataset List');
export const loadDatasetListSuccess = createAction('[Metamodel] Load Dataset List Success', props<{ datasets: Dataset[] }>());
export const loadDatasetListFail = createAction('[Metamodel] Load Dataset List Fail');
import { createAction, props } from '@ngrx/store';
import { Group } from '../models';
export const loadGroupList = createAction('[Metamodel] Load Group List');
export const loadGroupListSuccess = createAction('[Metamodel] Load Group List Success', props<{ groups: Group[] }>());
export const loadGroupListFail = createAction('[Metamodel] Load Group List Fail');
import { createAction, props } from '@ngrx/store';
import { Instance } from '../models';
export const loadInstanceList = createAction('[Metamodel] Load Instance List');
export const loadInstanceListSuccess = createAction('[Metamodel] Load Instance List Success', props<{ instances: Instance[] }>());
export const loadInstanceListFail = createAction('[Metamodel] Load Instance List Fail');
import { createAction, props } from '@ngrx/store';
import { OutputCategory } from '../models';
export const loadOutputCategoryList = createAction('[Metamodel] Load Output Category List');
export const loadOutputCategoryListSuccess = createAction('[Metamodel] Load Output Category List Success', props<{ outputCategories: OutputCategory[] }>());
export const loadOutputCategoryListFail = createAction('[Metamodel] Load Output Category List Fail');
import { createAction, props } from '@ngrx/store';
import { OutputFamily } from '../models';
export const loadOutputFamilyList = createAction('[Metamodel] Load Output Family List');
export const loadOutputFamilyListSuccess = createAction('[Metamodel] Load Output Family List Success', props<{ outputFamilies: OutputFamily[] }>());
export const loadOutputFamilyListFail = createAction('[Metamodel] Load Output Family List Fail');
import { createAction, props } from '@ngrx/store';
import { Survey } from '../models';
export const loadSurveyList = createAction('[Metamodel] Load Survey List');
export const loadSurveyListSuccess = createAction('[Metamodel] Load Survey List Success', props<{ surveys: Survey[] }>());
export const loadSurveyListFail = createAction('[Metamodel] Load Survey List Fail');
import { Option } from './option.model';
import { RendererConfig } from './renderers/renderer-config.model';
export interface Attribute {
id: number;
name: string;
label: string;
form_label: string;
description?: string;
output_display: number;
criteria_display: number;
search_flag?: string;
search_type?: string;
operator?: string;
type: string;
min?: string;
max?: string;
placeholder_min?: string;
placeholder_max?: string;
renderer?: string;
renderer_config?: RendererConfig;
display_detail: number;
selected?: boolean;
order_by?: boolean;
order_display?: number;
detail?: boolean;
renderer_detail?: string;
options?: Option[];
vo_utype?: string;
vo_ucd?: string;
vo_unit?: string;
vo_description?: string;
vo_datatype?: string;
vo_size?: number;
id_criteria_family?: number;
id_output_category?: number;
}
export interface CriteriaFamily {
id: number;
label: string;
display: number;
}
export interface DatasetFamily {
id: number;
label: string;
display: number;
}
export interface Dataset {
name: string;
table_ref: string;
label: string;
description: string;
display: number;
count: number;
vo: boolean;
data_path: string;
survey_name: string;
id_dataset_family: number;
public: boolean;
config: {
images: any[],
cone_search: {
enabled: boolean;
opened: boolean;
column_ra: number;
column_dec: number;
plot_enabled: boolean;
sdss_enabled: boolean;
sdss_display: number;
background: {id: number, enabled: boolean, display: number}[];
},
download: {
enabled: boolean;
opened: boolean;
csv: boolean;
ascii: boolean;
vo: boolean;
archive: boolean;
},
summary: {
enabled: boolean;
opened: boolean;
},
server_link: {
enabled: boolean;
opened: boolean;
},
samp: {
enabled: boolean;
opened: boolean;
},
datatable: {
enabled: boolean;
opened: boolean;
selectable_row: boolean;
}
};
}
export interface Column { export interface DbTableColumn {
name: string; name: string;
type: string; type: string;
}; };
export interface Group {
id: number;
role: string;
instance_name: string;
datasets: string[];
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment