瀏覽代碼

preparation for App opening in workspaceContent

Skylsmoi 6 年之前
父節點
當前提交
db3113aea9
共有 3 個文件被更改,包括 24 次插入20 次删除
  1. 19 15
      src/container/WorkspaceContent.jsx
  2. 2 2
      src/reducer/root.js
  3. 3 3
      src/reducer/workspaceContent.js

+ 19 - 15
src/container/WorkspaceContent.jsx 查看文件

15
   getAppList,
15
   getAppList,
16
   getContentTypeList,
16
   getContentTypeList,
17
   getWorkspaceContentList,
17
   getWorkspaceContentList,
18
-  getWorkspaceContent,
18
+  // getWorkspaceContent,
19
   getFolderContent,
19
   getFolderContent,
20
   getWorkspaceList
20
   getWorkspaceList
21
 } from '../action-creator.async.js'
21
 } from '../action-creator.async.js'
39
         type: undefined,
39
         type: undefined,
40
         folder: undefined
40
         folder: undefined
41
       },
41
       },
42
-      workspaceIdInUrl: props.match.params.idws ? parseInt(props.match.params.idws) : null
42
+      workspaceIdInUrl: props.match.params.idws ? parseInt(props.match.params.idws) : null,
43
+      workspaceOpened: false
43
     }
44
     }
44
 
45
 
45
     document.addEventListener('appCustomEvent', this.customEventReducer)
46
     document.addEventListener('appCustomEvent', this.customEventReducer)
52
         break
53
         break
53
       case 'appClosed':
54
       case 'appClosed':
54
         this.props.history.push(PAGE.WORKSPACE.CONTENT(this.props.workspace.id, ''))
55
         this.props.history.push(PAGE.WORKSPACE.CONTENT(this.props.workspace.id, ''))
56
+        this.setState({workspaceOpened: false})
55
         break
57
         break
56
     }
58
     }
57
   }
59
   }
72
       if (fetchGetContentTypeList.status === 200) dispatch(setContentTypeList(fetchGetContentTypeList.json))
74
       if (fetchGetContentTypeList.status === 200) dispatch(setContentTypeList(fetchGetContentTypeList.json))
73
     }
75
     }
74
 
76
 
75
-
76
     let wsToLoad = null
77
     let wsToLoad = null
77
     if (match.params.idws !== undefined) wsToLoad = match.params.idws
78
     if (match.params.idws !== undefined) wsToLoad = match.params.idws
78
 
79
 
98
   }
99
   }
99
 
100
 
100
   componentDidUpdate (prevProps, prevState) {
101
   componentDidUpdate (prevProps, prevState) {
101
-    const { contentType, workspace, user, renderApp, match } = this.props
102
+    const { contentType, workspaceContent, user, renderApp, match } = this.props
102
 
103
 
103
     console.log('componentDidUpdate')
104
     console.log('componentDidUpdate')
104
 
105
 
109
 
110
 
110
     // if (user.user_id !== -1 && prevProps.user.id !== user.id) dispatch(getWorkspaceList(user.user_id, idWorkspace))
111
     // if (user.user_id !== -1 && prevProps.user.id !== user.id) dispatch(getWorkspaceList(user.user_id, idWorkspace))
111
 
112
 
112
-    if (match.params.idcts && workspace.id !== -1) { // if a content id is in url, open it
113
+    if (match.params.idcts && workspaceContent.id !== -1 && !workspaceOpened && workspaceContent.length) { // if a content id is in url, open it
113
       const idContentToOpen = parseInt(match.params.idcts)
114
       const idContentToOpen = parseInt(match.params.idcts)
114
-      const contentToOpen = workspace.find(wsc => wsc.id === idContentToOpen) // || await dispatch(getWorkspaceContent(idWorkspace, idContentToOpen))
115
+      const contentToOpen = workspaceContent.find(wsc => wsc.id === idContentToOpen) // || await dispatch(getWorkspaceContent(idWorkspace, idContentToOpen))
115
 
116
 
116
       // @FIXME : for alpha, we do not handle subfolder. commented code bellow should load a component that is not in the workspace root
117
       // @FIXME : for alpha, we do not handle subfolder. commented code bellow should load a component that is not in the workspace root
117
       // if (contentToOpen === undefined) { // content is not is ws root
118
       // if (contentToOpen === undefined) { // content is not is ws root
119
       //   console.log(fetchContent)
120
       //   console.log(fetchContent)
120
       // }
121
       // }
121
 
122
 
123
+      console.log('contentToOpen', contentToOpen)
124
+
122
       renderApp(
125
       renderApp(
123
         contentType.find(ct => ct.type === contentToOpen.type),
126
         contentType.find(ct => ct.type === contentToOpen.type),
124
         user,
127
         user,
125
-        {...contentToOpen, workspace: workspace}
128
+        {...contentToOpen, workspaceContent: workspaceContent}
126
       )
129
       )
130
+      this.setState({workspaceOpened: true})
127
     }
131
     }
128
   }
132
   }
129
 
133
 
130
   handleClickContentItem = content => {
134
   handleClickContentItem = content => {
131
     console.log('content clicked', content)
135
     console.log('content clicked', content)
132
-    this.props.history.push(`${PAGE.WORKSPACE.CONTENT(content.workspace_id, content.id)}${this.props.location.search}`)
136
+    this.props.history.push(`${PAGE.WORKSPACE.CONTENT(content.workspaceId, content.id)}${this.props.location.search}`)
133
   }
137
   }
134
 
138
 
135
   handleClickEditContentItem = (e, content) => {
139
   handleClickEditContentItem = (e, content) => {
166
   }
170
   }
167
 
171
 
168
   render () {
172
   render () {
169
-    const { workspace, app, contentType } = this.props
173
+    const { workspaceContent, app, contentType } = this.props
170
 
174
 
171
     const filterWorkspaceContent = (contentList, filter) => {
175
     const filterWorkspaceContent = (contentList, filter) => {
172
       console.log(contentList, filter)
176
       console.log(contentList, filter)
173
       return filter.length === 0
177
       return filter.length === 0
174
         ? contentList
178
         ? contentList
175
         : contentList.filter(c => c.type === 'folder' || filter.includes(c.type)) // keep unfiltered files and folders
179
         : contentList.filter(c => c.type === 'folder' || filter.includes(c.type)) // keep unfiltered files and folders
176
-          // @FIXME we need to filter subfolder too, but right now, we dont handle subfolder
177
-          // .map(c => c.type !== 'folder' ? c : {...c, content: filterWorkspaceContent(c.content, filter)}) // recursively filter folder content
180
+      // @FIXME we need to filter subfolder too, but right now, we dont handle subfolder
181
+      // .map(c => c.type !== 'folder' ? c : {...c, content: filterWorkspaceContent(c.content, filter)}) // recursively filter folder content
178
     }
182
     }
179
     // .filter(c => c.type !== 'folder' || c.content.length > 0) // remove empty folder => 2018/05/21 - since we load only one lvl of content, don't remove empty
183
     // .filter(c => c.type !== 'folder' || c.content.length > 0) // remove empty folder => 2018/05/21 - since we load only one lvl of content, don't remove empty
180
 
184
 
181
     const urlFilter = qs.parse(this.props.location.search).type
185
     const urlFilter = qs.parse(this.props.location.search).type
182
 
186
 
183
-    const filteredWorkspaceContent = workspace.length > 0
184
-      ? filterWorkspaceContent(workspace, urlFilter ? [urlFilter] : [])
187
+    const filteredWorkspaceContent = workspaceContent.length > 0
188
+      ? filterWorkspaceContent(workspaceContent, urlFilter ? [urlFilter] : [])
185
       : []
189
       : []
186
     console.log('workspaceContent => filteredWorkspaceContent', filteredWorkspaceContent)
190
     console.log('workspaceContent => filteredWorkspaceContent', filteredWorkspaceContent)
187
 
191
 
193
           <PageTitle
197
           <PageTitle
194
             parentClass='workspace__header'
198
             parentClass='workspace__header'
195
             customClass='justify-content-between'
199
             customClass='justify-content-between'
196
-            title={workspace.label ? workspace.label : ''}
200
+            title={workspaceContent.label ? workspaceContent.label : ''}
197
           >
201
           >
198
             <DropdownCreateButton parentClass='workspace__header__btnaddworkspace' />
202
             <DropdownCreateButton parentClass='workspace__header__btnaddworkspace' />
199
           </PageTitle>
203
           </PageTitle>
256
   }
260
   }
257
 }
261
 }
258
 
262
 
259
-const mapStateToProps = ({ user, workspace, workspaceList, app, contentType }) => ({ user, workspace, workspaceList, app, contentType })
263
+const mapStateToProps = ({ user, workspaceContent, workspaceList, app, contentType }) => ({ user, workspaceContent, workspaceList, app, contentType })
260
 export default withRouter(connect(mapStateToProps)(appFactory(WorkspaceContent)))
264
 export default withRouter(connect(mapStateToProps)(appFactory(WorkspaceContent)))

+ 2 - 2
src/reducer/root.js 查看文件

2
 import lang from './lang.js'
2
 import lang from './lang.js'
3
 import flashMessage from './flashMessage.js'
3
 import flashMessage from './flashMessage.js'
4
 import user from './user.js'
4
 import user from './user.js'
5
-import workspace from './workspace.js'
5
+import workspaceContent from './workspaceContent.js'
6
 import workspaceList from './workspaceList.js'
6
 import workspaceList from './workspaceList.js'
7
 import app from './app.js'
7
 import app from './app.js'
8
 import contentType from './contentType.js'
8
 import contentType from './contentType.js'
9
 import timezone from './timezone.js'
9
 import timezone from './timezone.js'
10
 
10
 
11
-const rootReducer = combineReducers({ lang, flashMessage, user, workspace, workspaceList, app, contentType, timezone })
11
+const rootReducer = combineReducers({ lang, flashMessage, user, workspaceContent, workspaceList, app, contentType, timezone })
12
 
12
 
13
 export default rootReducer
13
 export default rootReducer

src/reducer/workspace.js → src/reducer/workspaceContent.js 查看文件

15
         isArchived: wsc.is_archived,
15
         isArchived: wsc.is_archived,
16
         parentId: wsc.parent_id,
16
         parentId: wsc.parent_id,
17
         isDeleted: wsc.is_deleted,
17
         isDeleted: wsc.is_deleted,
18
-        // show_in_ui: wsc.show_in_ui, ???
18
+        showInUi: wsc.show_in_ui,
19
         statusSlug: wsc.status_slug,
19
         statusSlug: wsc.status_slug,
20
-        subContentTypeSlug: wsc.sub_content_type_slug,
20
+        subContentTypeSlug: wsc.sub_content_type_slug
21
       }))
21
       }))
22
 
22
 
23
-    case `Update/${WORKSPACE}/Filter`:
23
+    case `Update/${WORKSPACE}/Filter`: // not used anymore ?
24
       return {...state, filter: action.filterList}
24
       return {...state, filter: action.filterList}
25
 
25
 
26
     case `Set/${WORKSPACE}/${FOLDER}/Content`:
26
     case `Set/${WORKSPACE}/${FOLDER}/Content`: