import React from 'react';
import urlTemplate from 'url-template';
import { Card, Table } from 'antd';
import { ColumnProps } from 'antd/lib/table';
import { DomainService, Entity } from 'matrix-ui-service';
import { Portlet } from './Portlet';
import stringTemplate from 'string-template';
import styled from 'styled-components';
import { StyleUtil, DateUtil } from '../../utils';
export class PortletListView extends Portlet {
render() {
if (!(this.state && this.state.portlet)) return null;
const { inTab } = this.props;
const { portlet, dataList } = this.state;
const { portletName, titleWhiteSpace, titleMaxSize, rowKey, extraLink } = this.state.portlet;
const extraLinkA = extraLink && (
更多
);
const TitleText = titleMaxSize
? StyleUtil.hiddenText(titleMaxSize)
: styled.p`
white-space: ${titleWhiteSpace};
margin: 0;
`;
const ContentDiv = styled.div`
display: flex;
flex-direction: column;
align-items: stretch;
`;
const Content = (
{inTab && {extraLinkA}
}
);
return inTab ? (
Content
) : (
{Content}
);
}
private getColumns(portlet: Entity, TitleText: any) {
const { titleTemplate, cateField, dateField, fromDateFormat, titleLink, toDateFormat } = portlet;
const linkTemplate = titleLink && urlTemplate.parse(titleLink);
const columns: ColumnProps[] = [
{
title: 'title',
key: 'titleFields',
render: (text: string, record: any) => {
const titleStr: string = titleTemplate && stringTemplate(titleTemplate, record);
return (
{titleStr}
);
},
},
];
if (cateField)
columns.push({
title: 'category',
dataIndex: cateField,
render: (text: string) => `[${text}]`,
fixed: 'left',
});
if (dateField)
columns.push({
title: 'date',
dataIndex: dateField,
align: 'right',
render: DateUtil.dateStringConvert.bind(null, fromDateFormat, toDateFormat),
fixed: 'right',
});
return columns;
}
get portletService(): DomainService {
return this.props.services.portletListViewService;
}
}