const addNewElementAction = {
icon: AddIcon,
- tooltip: 'Add',
+ tooltip: 'Add',
+ ariaLabel:'add-element',
onClick: () => {
navigate("[]"); // empty key means new element
},
const addWithApiDocElementAction = {
icon: PostAdd,
- tooltip: 'Add',
+ tooltip: 'Add',
+ ariaLabel:'add-element-via-api-doc',
onClick: () => {
window.open(apiDocPathCreate, '_blank');
},
render(): JSX.Element {
const refreshConnectionStatusLogAction = {
- icon: Refresh, tooltip: 'Refresh Connection Status Log Table', onClick: () => {
+ icon: Refresh, tooltip: 'Refresh Connection Status Log Table', ariaLabel:'refresh', onClick: () => {
this.setState({
refreshConnectionStatusLogEditorMode: RefreshConnectionStatusLogDialogMode.RefreshConnectionStatusLogTable
});
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
</plugins>
</build>
</project>
render(): JSX.Element {
const refreshEventLogAction = {
- icon: Refresh, tooltip: 'Refresh Event log', onClick: () => {
+ icon: Refresh, tooltip: 'Refresh Event log', ariaLabel:'refresh', onClick: () => {
this.setState({
refreshEventLogEditorMode: RefreshEventLogDialogMode.RefreshEventLogTable
});
import { IFaultStatus, faultStatusHandler } from './faultStatusHandler';
import { stuckAlarmHandler } from './clearStuckAlarmsHandler';
import { PanelId } from '../models/panelId';
-import { SetPartialUpdatesAction } from '../actions/partialUpdatesAction';
export interface IFaultAppStoreState {
currentProblems: ICurrentProblemsState;
alarmLogEntries: IAlarmLogEntriesState;
currentOpenPanel: PanelId | null;
faultStatus: IFaultStatus;
- listenForPartialUpdates: boolean;
}
const currentOpenPanelHandler: IActionHandler<PanelId | null> = (state = null, action) => {
return state;
}
-const arePartialUpdatesActiveHandler: IActionHandler<boolean> = (state = false, action) => {
- if (action instanceof SetPartialUpdatesAction) {
- state = action.isActive;
- }
- return state;
-}
-
declare module '../../../../framework/src/store/applicationStore' {
interface IApplicationStoreState {
fault: IFaultAppStoreState;
alarmLogEntries: alarmLogEntriesActionHandler,
currentOpenPanel: currentOpenPanelHandler,
faultStatus: faultStatusHandler,
- listenForPartialUpdates: arePartialUpdatesActiveHandler
};
export const faultAppRootHandler = combineActionHandler<IFaultAppStoreState>(actionHandlers);
applicationApi.applicationStoreInitialized.then(store => {
store.dispatch(refreshFaultStatusAsyncAction);
});
+
window.setInterval(() => {
applicationApi.applicationStoreInitialized.then(store => {
store.dispatch(refreshFaultStatusAsyncAction);
import ClearStuckAlarmsDialog, { ClearStuckAlarmsDialogMode } from '../components/clearStuckAlarmsDialog';
import RefreshAlarmLogDialog, { RefreshAlarmLogDialogMode } from '../components/refreshAlarmLogDialog';
import RefreshCurrentProblemsDialog, { RefreshCurrentProblemsDialogMode } from '../components/refreshCurrentProblemsDialog';
-import { SetPartialUpdatesAction } from '../actions/partialUpdatesAction';
const mapProps = (state: IApplicationStoreState) => ({
panelId: state.fault.currentOpenPanel,
switchActivePanel: (panelId: PanelId) => {
dispatcher.dispatch(setPanelAction(panelId));
},
- setPartialUpdates: (active: boolean) => dispatcher.dispatch(new SetPartialUpdatesAction(active))
});
type FaultApplicationComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp>;
render(): JSX.Element {
const clearAlarmsAction = {
- icon: Sync, tooltip: 'Clear stuck alarms', onClick: this.onDialogOpen
+ icon: Sync, tooltip: 'Clear stuck alarms', ariaLabel:'clear-stuck-alarms', onClick: this.onDialogOpen
};
const refreshCurrentProblemsAction = {
- icon: Refresh, tooltip: 'Refresh Current Problems List', onClick: () => {
+ icon: Refresh, tooltip: 'Refresh Current Problems List', ariaLabel:'refresh', onClick: () => {
this.setState({
refreshCurrentProblemsEditorMode: RefreshCurrentProblemsDialogMode.RefreshCurrentProblemsTable
});
};
const refreshAlarmLogAction = {
- icon: Refresh, tooltip: 'Refresh Alarm log table', onClick: () => {
+ icon: Refresh, tooltip: 'Refresh Alarm log table', ariaLabel:'refresh', onClick: () => {
this.setState({
refreshAlarmLogEditorMode: RefreshAlarmLogDialogMode.RefreshAlarmLogTable
});
};
- componentWillUnmount() {
- this.props.setPartialUpdates(false);
- }
-
public componentDidMount() {
if (this.props.panelId === null) { //set default tab if none is set
this.onToggleTabs("CurrentProblem");
+ }else{
+ this.onToggleTabs(this.props.panelId);
}
- this.props.setPartialUpdates(true);
}
private renderIcon = (props: { rowData: Fault | FaultAlarmNotification }) => {
render() {
const refreshInventoryAction = {
- icon: Refresh, tooltip: 'Refresh Inventory', onClick: () => {
+ icon: Refresh, tooltip: 'Refresh Inventory', ariaLabel: 'refresh', onClick: () => {
this.setState({
refreshInventoryEditorMode: RefreshInventoryDialogMode.RefreshInventoryTable
});
render() {
const { classes } = this.props;
const addMaintenenceEntryAction = {
- icon: AddIcon, tooltip: 'Add', onClick: () => {
+ icon: AddIcon, tooltip: 'Add', ariaLabel:'add-element', onClick: () => {
const startTime = (new Date().valueOf());
const endTime = startTime;
this.setState({
};
const refreshMaintenanceEntriesAction = {
- icon: Refresh, tooltip: 'Refresh Maintenance Entries', onClick: () => {
+ icon: Refresh, tooltip: 'Refresh Maintenance Entries', ariaLabel: 'refresh', onClick: () => {
this.setState({
refreshMaintenenceEntriesEditorMode: RefreshMaintenanceEntriesDialogMode.RefreshMaintenanceEntriesTable
});
</>
);
- const addMediatorConfigAction = { icon: AddIcon, tooltip: 'Add', onClick: this.onOpenAddConfigurationDialog };
+ const addMediatorConfigAction = { icon: AddIcon, tooltip: 'Add', ariaLabel: 'add-element', onClick: this.onOpenAddConfigurationDialog };
return (
<div className={classes.root}>
render() {
const { classes } = this.props;
const refreshMediatorAction = {
- icon: Refresh, tooltip: 'Refresh Mediator Server Table', onClick: () => {
+ icon: Refresh, tooltip: 'Refresh Mediator Server Table', ariaLabel:'refresh', onClick: () => {
this.setState({
refreshMediatorEditorMode: RefreshMediatorDialogMode.RefreshMediatorTable
});
};
const addMediatorServerActionButton = {
- icon: AddIcon, tooltip: 'Add', onClick: () => {
+ icon: AddIcon, tooltip: 'Add', ariaLabel:'add-element', onClick: () => {
this.setState({
mediatorServerEditorMode: EditMediatorServerDialogMode.AddMediatorServer,
mediatorServerToEdit: emptyMediatorServer,
<>
<ToggleContainer onToggleFilterButton={() => this.props.toggleFilterButton(!this.props.isFilterVisible)} existingFilter={this.props.existingFilter} onFilterChanged={this.onFilterChanged} selectedValue={this.props.currentView} showFilter={this.props.isFilterVisible} onChange={this.props.setSubView}>
{lineChart(chartPagedData)}
- <PerformanceDataTable stickyHeader idProperty={"_id"} tableId="perfromance-data-table" columns={performanceColumns} {...properties} {...actions} />
+ <PerformanceDataTable stickyHeader idProperty={"_id"} tableId="performance-data-table" columns={performanceColumns} {...properties} {...actions} />
</ToggleContainer>
</>
);
<Tab label="Transmission Power" value="TransmissionPower" aria-label="transmission-power" />
<Tab label="Adaptive Modulation" value="AdaptiveModulation" aria-label="adaptive-modulation" />
<Tab label="Temperature" value="Temperature" aria-label="temperature" />
- <Tab label="Signal-to-interference-plus-noise ratio (SINR)" value="SINR" aria-label="snir" />
+ <Tab label="Signal-to-interference-plus-noise ratio (SINR)" value="SINR" aria-label="sinr" />
<Tab label="Cross Polar Discrimination" value="CPD" aria-label="cross-polar-discrimination" />
</Tabs>
</AppBar>
<properties>
<buildtime>${maven.build.timestamp}</buildtime>
<distversion>ONAP Frankfurt (Neon, mdsal ${odl.mdsal.version})</distversion>
- <buildno>110.0d5d064(21/07/05)</buildno>
+ <buildno>115.f8b3b3c(21/07/30)</buildno>
<odlux.version>ONAP SDN-R | ONF Wireless for ${distversion} - Build: ${buildtime} ${buildno} ${project.version}</odlux.version>
</properties>
render(): JSX.Element {
const { classes, state } = this.props;
const errorInfo = state.framework.applicationState.errors.length && state.framework.applicationState.errors[state.framework.applicationState.errors.length - 1];
+
return (
<Modal className={classes.modal}
aria-labelledby="simple-modal-title"
enableSelection?: boolean;
disableSorting?: boolean;
disableFilter?: boolean;
- customActionButtons?: { icon: React.ComponentType<SvgIconProps>, tooltip?: string, onClick: () => void, disabled?: boolean }[];
+ customActionButtons?: { icon: React.ComponentType<SvgIconProps>, tooltip?: string, ariaLabel: string, onClick: () => void, disabled?: boolean }[];
onHandleClick?(event: React.MouseEvent<HTMLTableRowElement>, rowData: TData): void;
createContextMenu?: (row: TData) => React.ReactElement<MenuItemProps | DividerTypeMap<{}, "hr">, React.ComponentType<MenuItemProps | DividerTypeMap<{}, "hr">>>[];
};
{rows // may need ordering here
.map((entry: TData & { [RowDisabled]?: boolean, [kex: string]: any }, index) => {
const entryId = getId(entry);
- const isSelected = this.isSelected(entryId);
const contextMenu = (this.props.createContextMenu && this.state.contextMenuInfo.index === index && this.props.createContextMenu(entry)) || null;
+ const isSelected = this.isSelected(entryId) || this.state.contextMenuInfo.index === index;
return (
<TableRowExt
hover
numSelected: number | null;
title?: string;
tableId?: string;
- customActionButtons?: { icon: React.ComponentType<SvgIconProps>, tooltip?: string, onClick: () => void, disabled?: boolean }[];
+ customActionButtons?: { icon: React.ComponentType<SvgIconProps>, tooltip?: string, ariaLabel: string, onClick: () => void, disabled?: boolean }[];
onToggleFilter: () => void;
onExportToCsv: () => void;
}
render() {
const { numSelected, classes } = this.props;
const open = !!this.state.anchorEl;
- const buttonPrefix = this.props.tableId !== undefined ? this.props.tableId + '-' : '';
+ const buttonPrefix = this.props.tableId !== undefined ? this.props.tableId : 'table';
return (
<Toolbar className={`${classes.root} ${numSelected && numSelected > 0 ? classes.highlight : ''} `} >
<div className={classes.title}>
{this.props.customActionButtons
? this.props.customActionButtons.map((action, ind) => (
<Tooltip key={`custom-action-${ind}`} title={action.tooltip || ''}>
- <IconButton disabled={action.disabled} aria-label={buttonPrefix + `custom-action-${ind}`} onClick={() => action.onClick()}>
+ <IconButton disabled={action.disabled} aria-label={`${buttonPrefix}-${action.ariaLabel}-button`} onClick={() => action.onClick()}>
<action.icon />
</IconButton>
</Tooltip>
: null}
{numSelected && numSelected > 0 ? (
<Tooltip title="Delete">
- <IconButton aria-label={buttonPrefix + "delete"}>
+ <IconButton aria-label={`${buttonPrefix}-delete-button`}>
<DeleteIcon />
</IconButton>
</Tooltip>
) : (
<Tooltip title="Filter list">
- <IconButton aria-label={buttonPrefix + "filter-list"} onClick={() => { this.props.onToggleFilter && this.props.onToggleFilter() }}>
+ <IconButton aria-label={`${buttonPrefix}-filter-list-button`} onClick={() => { this.props.onToggleFilter && this.props.onToggleFilter() }}>
<FilterListIcon />
</IconButton>
</Tooltip>
)}
<Tooltip title="Actions">
<IconButton color="inherit"
- aria-label={buttonPrefix +"additional-actions-button"}
+ aria-label={`${buttonPrefix}-additional-actions-button`}
aria-owns={open ? 'menu-appbar' : undefined}
aria-haspopup="true"
onClick={this.handleMenu} >
const tabletWidthBreakpoint = 768;\r
\r
export const NavigationMenu = withStyles(styles)(connect()(({ classes, state, dispatch }: WithStyles<typeof styles> & Connect & Connect) => {\r
- const { user } = state.framework.authenticationState\r
- const isOpen = state.framework.applicationState.isMenuOpen\r
- const closedByUser = state.framework.applicationState.isMenuClosedByUser\r
+ const { user } = state.framework.authenticationState;\r
+ const isOpen = state.framework.applicationState.isMenuOpen;\r
+ const closedByUser = state.framework.applicationState.isMenuClosedByUser;\r
+ const transportUrl = state.framework.applicationState.transportpceUrl;\r
\r
const [responsive, setResponsive] = React.useState(false);\r
\r
) || null;\r
}) || null;\r
\r
- const transportPCELink = <ListItemLink\r
- key={"transportPCE"}\r
- to={window.localStorage.getItem(transportPCEUrl)!}\r
- primary={"TransportPCE"}\r
- icon={<FontAwesomeIcon icon={faProjectDiagram}/>} \r
- external/>;\r
-\r
- const linkFound = menuItems.find(obj=>obj.key === "linkCalculation");\r
- if(linkFound){\r
- const index = menuItems.indexOf(linkFound);\r
- menuItems.splice(index+1,0,transportPCELink);\r
- }else{\r
- menuItems.push(transportPCELink);\r
+ if(transportUrl.length>0){\r
+\r
+ const transportPCELink = <ListItemLink\r
+ key={"transportPCE"}\r
+ to={transportUrl}\r
+ primary={"TransportPCE"}\r
+ icon={<FontAwesomeIcon icon={faProjectDiagram} />}\r
+ external />;\r
+\r
+ const linkFound = menuItems.find(obj => obj.key === "linkCalculation");\r
+ \r
+ if (linkFound) {\r
+ const index = menuItems.indexOf(linkFound);\r
+ menuItems.splice(index + 1, 0, transportPCELink);\r
+ } else {\r
+ menuItems.push(transportPCELink);\r
+ }\r
}\r
+ \r
\r
return (\r
<Drawer\r
isWebsocketAvailable: boolean | undefined;
externalLoginProviders: ExternalLoginProvider[] | null;
authentication: "basic"|"oauth", // basic
- enablePolicy: boolean // false
+ enablePolicy: boolean, // false
+ transportpceUrl : string
}
const applicationStateInit: IApplicationState = {
externalLoginProviders: null,
authentication: "basic",
enablePolicy: false,
+ transportpceUrl: ""
};
export const configureApplication = (config: ApplicationConfig) => {
applicationStateInit.authentication = config.authentication === "oauth" ? "oauth" : "basic";
applicationStateInit.enablePolicy = config.enablePolicy ? true : false;
+ applicationStateInit.transportpceUrl=config.transportpceUrl == undefined ? "" : config.transportpceUrl;
}
export const applicationStateHandler: IActionHandler<IApplicationState> = (state = applicationStateInit, action) => {
export type ApplicationConfig = {
authentication: "basic"|"oauth", // basic
- enablePolicy: false // false
+ enablePolicy: false, // false
+ transportpceUrl? : string
};
\ No newline at end of file
const connectionStatusOptions = {
responsive: true,
maintainAspectRatio: false,
+ animation: {
+ duration: 0
+ },
plugins: {
legend: {
display: true,
const connectionStatusUnavailableOptions = {
responsive: true,
maintainAspectRatio: false,
+ animation: {
+ duration: 0
+ },
plugins: {
legend: {
display: true,
const alarmStatusOptions = {
responsive: true,
maintainAspectRatio: false,
+ animation: {
+ duration: 0
+ },
plugins: {
legend: {
display: true,
const alarmStatusUnavailableOptions = {
responsive: true,
maintainAspectRatio: false,
+ animation: {
+ duration: 0
+ },
plugins: {
legend: {
display: true,
odlux.framework.buildno=110.0d5d064(21/07/05)
-odlux.apps.configurationApp.buildno=96.078ad12(21/03/25)
+odlux.apps.configurationApp.buildno=103.10d8f9a(21/05/21)
odlux.apps.connectApp.buildno=110.0d5d064(21/07/05)
-odlux.apps.eventLogApp.buildno=96.078ad12(21/03/25)
+odlux.apps.eventLogApp.buildno=103.10d8f9a(21/05/21)
odlux.apps.faultApp.buildno=110.0d5d064(21/07/05)
odlux.apps.helpApp.buildno=96.078ad12(21/03/25)
odlux.apps.inventoryApp.buildno=108.a60ec28(21/06/11)
odlux.apps.linkCalculationApp.buildno=96.078ad12(21/03/25)
-odlux.apps.maintenanceApp.buildno=96.078ad12(21/03/25)
-odlux.apps.mediatorApp.buildno=96.078ad12(21/03/25)
+odlux.apps.maintenanceApp.buildno=103.10d8f9a(21/05/21)
+odlux.apps.mediatorApp.buildno=103.10d8f9a(21/05/21)
odlux.apps.networkMapApp.buildno=102.acd1c0b(21/05/07)
odlux.apps.permanceHistoryApp.buildno=81.1c38886(20/12/04)