fix edit btn, bool fields disp

VRTKSSUP-229
Осьмаков Денис 5 years ago
parent 0efb9f66e4
commit 705403106b
  1. 7
      src/webparts/summaryWebPart/components/SummaryContainer/SummaryContainer.tsx
  2. 14
      src/webparts/summaryWebPart/components/SummaryWebPart.tsx
  3. 66
      src/webparts/summaryWebPart/components/TrafficLight/TrafficLight.tsx

@ -68,12 +68,13 @@ export default class SummaryContainer extends React.Component<IComponentProps,IC
.get()
.then(currentProject => {
res.forEach(e=>{
let fieldValue = !e.fieldName.match(/\/Title/gi)?currentProject[0][e.fieldName] : currentProject[0][e.fieldName.split('/')[0]]? currentProject[0][e.fieldName.split('/')[0]]['Title'] : ''
if (fieldValue){
let fieldValue = !e.fieldName.match(/\/Title/gi)?currentProject[0][e.fieldName] : currentProject[0][e.fieldName.split('/')[0]]? currentProject[0][e.fieldName.split('/')[0]]['Title'] : '';
if (fieldValue || typeof fieldValue === 'boolean'){
toState.push({
key: e.key,
fieldName: e.fieldRuTitle,
value: fieldValue
value: fieldValue === true ? 'Да' : fieldValue === false ? 'Нет' : fieldValue
});
}
});

@ -4,18 +4,21 @@ import { Spinner, SpinnerSize } from 'office-ui-fabric-react/lib/Spinner';
import SummaryGlobalComponent from './SummaryGlobalComponent/SummaryGlobalComponent'
import { PrimaryButton } from 'office-ui-fabric-react';
import { IPageData } from '../interfaces/IPageData';
import {sp, Web} from '@pnp/sp'
export interface IComponentState{
pageData: IPageData | null
isLoaded: boolean;
isBlank: boolean;
prjID: string | number;
}
export default class SummaryWebPart extends React.Component<ISummaryWebPartProps, IComponentState > {
public state = {
pageData: null,
isLoaded: false,
isBlank: false
isBlank: false,
prjID: ''
}
componentDidMount(){
@ -23,6 +26,11 @@ export default class SummaryWebPart extends React.Component<ISummaryWebPartProps
let relUrl = context.pageContext.web.serverRelativeUrl
let projectCode = relUrl ? relUrl.split('/')[relUrl.split('/').length - 1] : '';
let web = new Web('http://portal.vertex.spb.ru/PMIS');
web.lists.getById('eeba7db6-4c28-41a2-a54e-82a2aaf0ca15').items.filter("Code_project eq '" + projectCode +"'").select('ID').get().then(e=>{
this.setState({prjID: e[0].ID})
})
fetch(requestUrl + /* 'test01_test02_001' */projectCode)
.then((response)=>{
return response.json()
@ -32,8 +40,8 @@ export default class SummaryWebPart extends React.Component<ISummaryWebPartProps
}
public relocate = () => {
const { pageData } = this.state;
location.href = 'http://portal.vertex.spb.ru/PMIS/SitePages/EditForm.aspx?itemId=' + pageData.PrjInfo.spID;
const { prjID } = this.state;
location.href = 'http://portal.vertex.spb.ru/PMIS/SitePages/EditForm.aspx?itemId=' + prjID;
}
public render(): React.ReactElement<ISummaryWebPartProps> {

@ -7,7 +7,7 @@ import { DetailsList, SelectionMode, DetailsListLayoutMode } from 'office-ui-fab
export interface IComponentProps{
statuses: {[key: string]: string;};
taskStats: {[key: string]: number;};
dateInfo: { dateFinish: string, dateStart: string };
dateInfo: { dateFinish: string, dateStart: string, duration?: any, percentCompl?: any };
}
export default class TrafficLight extends React.Component<IComponentProps, {}> {
public renderItemColumn = (item, index: number, column) => {
@ -25,48 +25,52 @@ export default class TrafficLight extends React.Component<IComponentProps, {}> {
return <span>{fieldContent}</span>;
}
}
public render(): React.ReactElement<IComponentProps> {
const { statuses, taskStats, dateInfo} = this.props;
let procent = (taskStats.compl/(taskStats.plan + taskStats.compl + taskStats.exec))* 100;
let startDate = moment(dateInfo.dateStart).format("DD.MM.YYYY");
let finDate = moment(dateInfo.dateFinish).format("DD.MM.YYYY");
let totalDays = new moment.duration((new Date(dateInfo.dateFinish ? dateInfo.dateFinish.split('T')[0] : dateInfo.dateFinish) as any) - (new Date(dateInfo.dateStart ? dateInfo.dateStart.split('T')[0] : dateInfo.dateStart) as any)).asDays();
return (
<div className={styles.statusesContainer}>
<DetailsList
onRenderItemColumn={this.renderItemColumn}
items= {statuses.budget !== 'none'?[
public setItems = (statuses) =>{
let result = [];
let index = 1;
if (statuses.term !== 'none'){
result.push(
{
key: 1,
key: index,
fieldName: "Статус по сроку",
status: statuses.term
},
});
++index;
}
if (statuses.budget !== 'none') {
result.push(
{
key: 2,
key: index,
fieldName: "Статус по бюджету",
status: statuses.budget
},
{
key: 3,
fieldName: "Статус по % выполнения",
status: statuses.percCompl
});
++index;
}
] :
[
if (statuses.percCompl !== 'none') {
result.push(
{
key: 1,
fieldName: "Статус по сроку",
status: statuses.term
},
{
key: 2,
key: index,
fieldName: "Статус по % выполнения",
status: statuses.percCompl
});
}
]
return result;
}
public render(): React.ReactElement<IComponentProps> {
const { statuses, taskStats, dateInfo} = this.props;
let procent = (taskStats.compl/(taskStats.plan + taskStats.compl + taskStats.exec))* 100;
let startDate = moment(dateInfo.dateStart).format("DD.MM.YYYY");
let finDate = moment(dateInfo.dateFinish).format("DD.MM.YYYY");
let totalDays = dateInfo.duration + 'дн.'
return (
<div className={styles.statusesContainer}>
<DetailsList
onRenderItemColumn={this.renderItemColumn}
items={this.setItems(statuses)}
columns={[
{
key: "column1",
@ -139,7 +143,7 @@ export default class TrafficLight extends React.Component<IComponentProps, {}> {
marginTop: 15,
marginBottom: 15
}}
>{`Актуальный статус выполнения ${!isNaN(+procent.toFixed(2)) ? procent.toFixed(2) + '%' : ' -' }`}</div>
>{`Актуальный статус выполнения ${dateInfo.percentCompl ? dateInfo.percentCompl.toString().match(/\./gi) ? dateInfo.percentCompl.toFixed(2) : dateInfo.percentCompl : ' -'}${dateInfo.percentCompl ? '%' : ''}`}</div>
</div>
);
}

Loading…
Cancel
Save