Browse Source

首页添加收藏标识

zhuth 6 years ago
parent
commit
05c77d95be

+ 2 - 1
src/components/dashboard/menu.jsx

@@ -87,7 +87,7 @@ class DashboardMenu extends React.Component {
     }
 
     generateMenu(tree, regLabel) {
-        const { dispatch, onlyMenu, searchMenu, editable } = this.props;
+        const { dispatch, onlyMenu, searchMenu, editable, extraTools } = this.props;
         const { editingKey } = this.state;
         let ftree = this.cloneTree(tree);
         ftree = this.reduceTree(ftree, regLabel)
@@ -170,6 +170,7 @@ class DashboardMenu extends React.Component {
                         });
                     }}/>}
                 </div>}
+                {extraTools && extraTools.render && extraTools.render(t)}
             </div>
 
             return <TreeNode title={title} key={t.code} >

+ 9 - 5
src/components/homePage/collection.jsx

@@ -24,16 +24,16 @@ class Collection extends React.Component {
     }
 
     generateCollectionMenus() {
-        const { home } = this.props;
+        const { home, dispatch } = this.props;
         const { collectionDashboards, menuFilterLabel } = home;
         const reg = new RegExp('([+ \\- & | ! ( ) { } \\[ \\] ^ \" ~ * ? : ( ) \/])', 'g'); // 需要转义的字符
         const regLabel = menuFilterLabel.replace(new RegExp('(\\\\)', 'g'), '\\$1').replace(reg, '\\$1'); // 添加转义符号
         if(collectionDashboards.length > 0) {
             return collectionDashboards.filter(c => c.name.search(new RegExp('(' + regLabel + '){1}', 'ig')) > -1).map((c, i) => (
-                <li className='item' key={i}>
-                    <span style={{ fontWeight: 'bold', cursor: 'pointer' }} onClick={() => {
-                        this.openTab(c);
-                    }}>
+                <li className='item' key={i}  onClick={() => {
+                    this.openTab(c);
+                }}>
+                    <span style={{ fontWeight: 'bold', cursor: 'pointer' }}>
                         <Icon style={{ marginRight: '8px' }} type="pushpin" />
                         {
                             <span>
@@ -47,6 +47,10 @@ class Collection extends React.Component {
                             </span>
                         }
                     </span>
+                    <Icon type="star" theme="filled" style={{ color: '#F2B91D', cursor: 'pointer' }} onClick={(e) => {
+                        e.stopPropagation()
+                        dispatch({ type: 'home/uncollect', data: c });
+                    }}/>
                 </li>
             ));
         }else {

+ 3 - 0
src/components/homePage/collection.less

@@ -19,6 +19,9 @@
                 &>.item {
                     user-select:none;
                     padding: 6px 0 5px 0;
+                    display: flex;
+                    justify-content: space-between;
+                    cursor: pointer;
                 }
             }
         }

+ 12 - 1
src/components/homePage/sider.jsx

@@ -34,7 +34,7 @@ class MenuLayout extends React.Component {
 
     render() {
         const { home, dispatch,dashboard } = this.props;
-        const { menuFilterLabel } = home;
+        const { menuFilterLabel, collectionDashboards } = home;
 
         return <Layout className='home-menu'>
             <Header>
@@ -77,6 +77,7 @@ class MenuLayout extends React.Component {
                         ] });
                     }}
                     onSelect={selectedMenu => {
+                        console.log('onSelect');
                         // dispatch({ type: 'home/setField', name: 'menuSelectedKeys', value: selectedKeys })
                         if(selectedMenu && selectedMenu.type === 'dashboard') {
                             dispatch({ type: 'home/openTab', tab: {
@@ -85,6 +86,16 @@ class MenuLayout extends React.Component {
                             } })
                         }
                     }}
+                    extraTools={{
+                        render: (menuItem) => {return menuItem.type === 'dashboard' ? <Icon type="star" theme={collectionDashboards.findIndex(c => c.code === menuItem.code) > -1 ? 'filled': ''} style={{ color: '#F2B91D', cursor: 'pointer' }} onClick={(e) => {
+                            e.stopPropagation()
+                            if(collectionDashboards.findIndex(c => c.code === menuItem.code) > -1) {
+                                dispatch({ type: 'home/uncollect', data: menuItem });
+                            }else {
+                                dispatch({ type: 'home/collect', data: menuItem });
+                            }
+                        }}/> : null}
+                    }}
                 />
             </Content>
         </Layout>;

+ 15 - 11
src/models/dashboardDesigner.js

@@ -302,17 +302,21 @@ export default {
             return { ...state, items };
         },
         setItemFields(state, action) {
-            const { code, fields } = action;
-            const { items } = state;
-            let index = items.findIndex(item => item.code === code);
-            const targetItem = items[index];
-            fields.forEach(field => {
-                targetItem[field.name] = field.value;
-            });
-            items[index] = {
-                ...targetItem
-            };
-            return { ...state, items };
+            try {
+                const { code, fields } = action;
+                const { items } = state;
+                let index = items.findIndex(item => item.code === code);
+                const targetItem = items[index];
+                fields.forEach(field => {
+                    targetItem[field.name] = field.value;
+                });
+                items[index] = {
+                    ...targetItem
+                };
+                return { ...state, items };
+            }catch(e) {
+                message.error(e.message);
+            }
         },
     },