diff --git a/resources/frontend_client/app/home/actions.js b/resources/frontend_client/app/home/actions.js index d2e14608f044a403b41836f4011f08c6bade693e..05ccf503a20a37d94a32200ae929a7addac78d00 100644 --- a/resources/frontend_client/app/home/actions.js +++ b/resources/frontend_client/app/home/actions.js @@ -2,7 +2,6 @@ import _ from "underscore"; import { createAction } from "redux-actions"; -import { normalize, Schema, arrayOf } from "normalizr"; import moment from "moment"; @@ -38,18 +37,6 @@ const ActivityApi = new AngularResourceProxy("Activity", ["list", "recent_views" const CardApi = new AngularResourceProxy("Card", ["list"]); const MetadataApi = new AngularResourceProxy("Metabase", ["db_list", "db_metadata"]); -// normalizr schemas -const activity = new Schema('activity'); -const card = new Schema('card'); -// const database = new Schema('database'); -// const table = new Schema('table'); -// const user = new Schema('user'); - -// activity.define({ -// user: user, -// database: database, -// table: table -// }) // action constants export const SET_SELECTED_TAB = 'SET_SELECTED_TAB'; @@ -63,7 +50,6 @@ export const FETCH_RECENT_VIEWS = 'FETCH_RECENT_VIEWS'; // action creators - export const setSelectedTab = createAction(SET_SELECTED_TAB); export const setCardsFilter = createThunkAction(SET_CARDS_FILTER, function(filterDef) { @@ -96,14 +82,14 @@ export const setCardsFilter = createThunkAction(SET_CARDS_FILTER, function(filte export const fetchActivity = createThunkAction(FETCH_ACTIVITY, function() { return async function(dispatch, getState) { - let activityItems = await ActivityApi.list(); - for (var ai of activityItems) { + let activity = await ActivityApi.list(); + for (var ai of activity) { ai.timestamp = moment(ai.timestamp); ai.hasLinkableModel = function() { return (_.contains(["card", "dashboard"], this.model)); }; } - return normalize(activityItems, arrayOf(activity)); + return activity; }; }); @@ -117,6 +103,7 @@ export const fetchRecentViews = createThunkAction(FETCH_RECENT_VIEWS, function() }; }); + export const fetchCards = createThunkAction(FETCH_CARDS, function(filterMode, filterModelId) { return async function(dispatch, getState) { let cards = await CardApi.list({'filterMode' : filterMode, 'model_id' : filterModelId }); @@ -125,26 +112,21 @@ export const fetchCards = createThunkAction(FETCH_CARDS, function(filterMode, fi c.updated_at = moment(c.updated_at); c.icon = c.display ? 'illustration_visualization_' + c.display : null; } - return normalize(cards, arrayOf(card)); + return cards; }; }); export const fetchDatabases = createThunkAction(FETCH_DATABASES, function() { return async function(dispatch, getState) { - let databases = await MetadataApi.db_list(); - return databases; + return await MetadataApi.db_list(); }; }); + +export const clearDatabaseMetadata = createAction(CLEAR_DATABASE_METADATA); + export const fetchDatabaseMetadata = createThunkAction(FETCH_DATABASE_METADATA, function(database_id) { return async function(dispatch, getState) { - let metadata = await MetadataApi.db_metadata({'dbId': database_id}); - return metadata; + return await MetadataApi.db_metadata({'dbId': database_id}); }; }); - -export const clearDatabaseMetadata = createAction(CLEAR_DATABASE_METADATA); - -// fetch recent items (user) -// fetch table list (database) - diff --git a/resources/frontend_client/app/home/reducers.js b/resources/frontend_client/app/home/reducers.js index 4023bf083af004f3ab3a208c8be2f76ea3887bd7..c8bbbd2874c38929417e1575cec0b5b388aa12a9 100644 --- a/resources/frontend_client/app/home/reducers.js +++ b/resources/frontend_client/app/home/reducers.js @@ -24,12 +24,8 @@ export const cardsFilter = handleActions({ export const activity = handleActions({ - [FETCH_ACTIVITY]: { next: (state, { payload }) => ({ ...payload.entities.activity }) } -}, {}); - -export const activityIdList = handleActions({ - [FETCH_ACTIVITY]: { next: (state, { payload }) => payload.result } -}, null); + [FETCH_ACTIVITY]: { next: (state, { payload }) => payload } +}, []); export const recentViews = handleActions({ [FETCH_RECENT_VIEWS]: { next: (state, { payload }) => payload } @@ -37,12 +33,8 @@ export const recentViews = handleActions({ export const cards = handleActions({ - [FETCH_CARDS]: { next: (state, { payload }) => ({ ...payload.entities.card }) } -}, {}); - -export const cardIdList = handleActions({ - [FETCH_CARDS]: { next: (state, { payload }) => payload.result } -}, null); + [FETCH_CARDS]: { next: (state, { payload }) => payload } +}, []); export const databases = handleActions({ diff --git a/resources/frontend_client/app/home/selectors.js b/resources/frontend_client/app/home/selectors.js index 120b3c19b9e0b22a7a8a5db0939bd4d766a7c9b6..d60d162cbe3e7fa3f96373dd43f4d65f8ea68612 100644 --- a/resources/frontend_client/app/home/selectors.js +++ b/resources/frontend_client/app/home/selectors.js @@ -7,29 +7,16 @@ const selectedTabSelector = state => state.selectedTab; const cardsFilterSelector = state => state.cardsFilter; const activitySelector = state => state.activity; -const activityIdListSelector = state => state.activityIdList; - const recentViewsSelector = state => state.recentViews; const cardsSelector = state => state.cards; -const cardIdListSelector = state => state.cardIdList; const databasesSelector = state => state.databases; const databaseMetadataSelector = state => state.databaseMetadata; -const activityListSelector = createSelector( - [activityIdListSelector, activitySelector], - (activityIdList, activity) => activityIdList && activityIdList.map(id => activity[id]) -); - -const cardListSelector = createSelector( - [cardIdListSelector, cardsSelector], - (cardIdList, cards) => cardIdList && cardIdList.map(id => cards[id]) -); - // our master selector which combines all of our partial selectors above export const homepageSelectors = createSelector( - [selectedTabSelector, cardsFilterSelector, activityListSelector, recentViewsSelector, cardListSelector, databasesSelector, databaseMetadataSelector], + [selectedTabSelector, cardsFilterSelector, activitySelector, recentViewsSelector, cardsSelector, databasesSelector, databaseMetadataSelector], (selectedTab, cardsFilter, activity, recentViews, cards, databases, databaseMetadata) => ({selectedTab, cardsFilter, activity, recentViews, cards, databases, databaseMetadata}) ); \ No newline at end of file