Skip to content

Commit

Permalink
React sessionStorage added to ease navigation problems.
Browse files Browse the repository at this point in the history
  • Loading branch information
TWhidden committed Sep 25, 2018
1 parent 8a813c1 commit 23ee57e
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ public void SetMediaElement(MediaElement mediaElement)
public async void StopPlayback()
{
#if CORE
// x3 idea from https://stackoverflow.com/a/283357/1004187
_externalPlayerProcess?.StandardInput.WriteLine("\x3");
_externalPlayerProcess?.StandardInput.Close();
_externalPlayerProcess?.Kill();
_externalPlayerProcess?.Close();
_externalPlayerProcess?.Dispose();

Expand Down
18 changes: 18 additions & 0 deletions HolidayShowWeb/ClientApp/src/components/DeviceEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ const styles = theme => ({
},
});

const sessionDeviceSelected = "DeviceEdit-DeviceSelected";

class DeviceManager extends Component {
displayName = DeviceManager.name

Expand All @@ -45,6 +47,21 @@ class DeviceManager extends Component {
let devices = await this.DeviceServices.getAllDevices();

let deviceSelected = devices[0];

let lastSelectedId = sessionStorage.getItem(sessionDeviceSelected);
if (lastSelectedId != null) {

console.log(`${sessionDeviceSelected}: ${parseInt(lastSelectedId)}`)

let lastSelected = Enumerable.asEnumerable(devices)
.Where(d => d.deviceId == parseInt(lastSelectedId))
.FirstOrDefault();

if(lastSelected != null){
deviceSelected = lastSelected;
}
}

if (deviceSelected != null) {
this.setState({
devices,
Expand Down Expand Up @@ -119,6 +136,7 @@ class DeviceManager extends Component {
deviceIdSelected: 0
});
} else {
sessionStorage.setItem(sessionDeviceSelected, device.deviceId);
this.setState({
deviceSelected: device,
deviceIdSelected: device.deviceId
Expand Down
104 changes: 73 additions & 31 deletions HolidayShowWeb/ClientApp/src/components/DevicePatternEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ const styles = theme => ({
},
});

const sessionLastDeviceSelected = "PatternEdit-selectedDevice";
const sessionLastPatternSelected = "PatternEdit-selectedPattern";

class DevicePattern extends Component {
displayName = DevicePattern.name

Expand Down Expand Up @@ -70,15 +73,15 @@ class DevicePattern extends Component {
});

} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}

await this.getDevices();
}

getDevices = async () => {
getDevices = async () => {
let deviceIdSelected = 0;

try {
Expand All @@ -87,8 +90,22 @@ class DevicePattern extends Component {
let devices = await this.DeviceServices.getAllDevices();

let deviceSelected = Enumerable.asEnumerable(devices).FirstOrDefault();

if(deviceSelected != null){

let lastSelectedDeviceId = sessionStorage.getItem(sessionLastDeviceSelected);
if (lastSelectedDeviceId != null) {

console.log(`${sessionLastDeviceSelected}: ${parseInt(lastSelectedDeviceId)}`)

let lastSelectedDevice = Enumerable.asEnumerable(devices)
.Where(d => d.deviceId == parseInt(lastSelectedDeviceId))
.FirstOrDefault();

if(lastSelectedDevice != null){
deviceSelected = lastSelectedDevice;
}
}

if (deviceSelected != null) {
deviceIdSelected = deviceSelected.deviceId;
}

Expand All @@ -99,7 +116,7 @@ class DevicePattern extends Component {
});

} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
Expand All @@ -118,6 +135,10 @@ class DevicePattern extends Component {

if (device == null) return;

console.log(`setting ${sessionLastDeviceSelected}: ${deviceId}`)

sessionStorage.setItem(sessionLastDeviceSelected, deviceId);

this.setState({
deviceIdSelected: deviceId,
deviceSelected: device
Expand All @@ -135,7 +156,24 @@ class DevicePattern extends Component {
this.setIsBusy(true);
let patterns = await this.PatternServices.getDevicePatternsByDeviceId(device.deviceId);

patternId = Enumerable.asEnumerable(patterns).Select(x=> x.devicePatternId).FirstOrDefault();
let lastSelectedPatternId = sessionStorage.getItem(sessionLastPatternSelected);
if (lastSelectedPatternId != null) {

console.log(`${sessionLastPatternSelected}: ${parseInt(lastSelectedPatternId)}`)

let lastSelectedPattern = Enumerable.asEnumerable(patterns)
.Where(d => d.devicePatternId == parseInt(lastSelectedPatternId))
.FirstOrDefault();

if(lastSelectedPattern != null){
patternId = lastSelectedPattern.devicePatternId;
}
}

// If the state returned something that didint exist, select the first one.
if(patternId == 0){
patternId = Enumerable.asEnumerable(patterns).Select(x => x.devicePatternId).FirstOrDefault();
}

this.setState({
patterns,
Expand All @@ -144,7 +182,7 @@ class DevicePattern extends Component {
});

} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
Expand All @@ -153,7 +191,7 @@ class DevicePattern extends Component {
}

getIoPortsForSelectedDevice = async (device) => {

try {
this.setIsBusy(true);
let ports = await this.DeviceIoPortServices.ioPortGetByDeviceId(device.deviceId);
Expand All @@ -165,20 +203,24 @@ class DevicePattern extends Component {
})

} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
}

handlePatternChange = async (patternId) => {

if(patternId == null) return;
if (patternId == null) return;

let patternSelected = Enumerable.asEnumerable(this.state.patterns)
.Where(x => x.devicePatternId === patternId)
.FirstOrDefault();

console.log(`setting ${sessionLastPatternSelected}: ${patternId}`)

sessionStorage.setItem(sessionLastPatternSelected, patternId);

this.setState({
patternSelected,
patternIdSelected: patternId
Expand All @@ -199,7 +241,7 @@ class DevicePattern extends Component {
});

} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
Expand Down Expand Up @@ -227,7 +269,7 @@ class DevicePattern extends Component {
})

} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
Expand All @@ -254,7 +296,7 @@ class DevicePattern extends Component {
})

} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
Expand Down Expand Up @@ -283,7 +325,7 @@ class DevicePattern extends Component {

this.setState({});
} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
Expand Down Expand Up @@ -319,7 +361,7 @@ class DevicePattern extends Component {
});

} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
Expand All @@ -336,7 +378,7 @@ class DevicePattern extends Component {
patternSequences: []
})
} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {
this.setIsBusy(false);
}
Expand Down Expand Up @@ -425,33 +467,33 @@ class DevicePattern extends Component {
<div>

<div style={{ display: "flex", flexDirection: "row" }}>
<div className="child" style={{ width: "100px" }}>
<div className="child" style={{ width: "100px" }}>
<Typography variant="body2" gutterBottom>
On At:
On At:
</Typography>
</div>

<div className="child" style={{ width: "100px" }}>
<Typography variant="body2" gutterBottom>
Duration:
<Typography variant="body2" gutterBottom>
Duration:
</Typography>
</div>
</div>

<div className="child">
<Typography variant="body2" gutterBottom>
Gpio Port:
<Typography variant="body2" gutterBottom>
Gpio Port:
</Typography>
</div>
</div>

<div className="child">
<Typography variant="body2" gutterBottom>
Audio File:
<Typography variant="body2" gutterBottom>
Audio File:
</Typography>
</div>

<div className="child">
<Typography variant="body2" gutterBottom>
Delete
<Typography variant="body2" gutterBottom>
Delete
</Typography>
</div>

Expand Down Expand Up @@ -479,7 +521,7 @@ class DevicePattern extends Component {
{
this.state.isBusy && (<BusyContent />)
}
<ErrorContent errorMessage={this.state.errorMessage} errorClear={()=>{this.setState({errorMessage: null})}}/>
<ErrorContent errorMessage={this.state.errorMessage} errorClear={() => { this.setState({ errorMessage: null }) }} />
</div >
);
}
Expand Down Expand Up @@ -514,7 +556,7 @@ class EditPattern extends Component {
try {
await this.DevicePatternSequenceServices.sequenceSave(sequenceId, sequence);
} catch (e) {
this.setState({errorMessage: e.message})
this.setState({ errorMessage: e.message })
} finally {

}
Expand Down Expand Up @@ -586,7 +628,7 @@ class EditPattern extends Component {
<Tooltip title="Delete Command">
<IconButton onClick={(evt) => this.props.onDelete(this.props.sequence)}><DeleteIcon /></IconButton>
</Tooltip>
<ErrorContent errorMessage={this.state.errorMessage} errorClear={()=>{this.setState({errorMessage: null})}}/>
<ErrorContent errorMessage={this.state.errorMessage} errorClear={() => { this.setState({ errorMessage: null }) }} />
</div>
)
}
Expand Down
20 changes: 20 additions & 0 deletions HolidayShowWeb/ClientApp/src/components/EffectsEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ const moveAndReorder = (
return [sourceResult, destinationResult]
};

const sessionEffectSelected = "EffectEdit-EffectSelected";

class EffectsEditor extends Component {
displayName = EffectsEditor.name
Expand Down Expand Up @@ -160,6 +161,22 @@ class EffectsEditor extends Component {
let effects = await this.EffectServices.getAllEffects();

let effectSelected = Enumerable.AsEnumerable(effects).FirstOrDefault();


let lastSelectedId = sessionStorage.getItem(sessionEffectSelected);
if (lastSelectedId != null) {

console.log(`${sessionEffectSelected}: ${parseInt(lastSelectedId)}`)

let lastSelected = Enumerable.asEnumerable(effects)
.Where(d => d.effectId == parseInt(lastSelectedId))
.FirstOrDefault();

if(lastSelected != null){
effectSelected = lastSelected;
}
}

let effectIdSelected = 0;
if (effectSelected != null) {
effectIdSelected = effectSelected.effectId;
Expand Down Expand Up @@ -191,6 +208,9 @@ class EffectsEditor extends Component {

if (effect == null) return;

console.log(`setting ${sessionEffectSelected}: ${effectId}`)
sessionStorage.setItem(sessionEffectSelected, effectId);

this.setState({
effectSelected: effect,
effectIdSelected: effect.effectId,
Expand Down
Loading

0 comments on commit 23ee57e

Please sign in to comment.