added moving column capability

This commit is contained in:
Nicolas Constant 2019-01-29 23:36:05 -05:00
parent 15ad95615b
commit a69a39e666
No known key found for this signature in database
GPG Key ID: 1E9F677FB01A5688
2 changed files with 41 additions and 4 deletions

View File

@ -1,7 +1,7 @@
import { Component, OnInit, Input } from '@angular/core';
import { Store } from '@ngxs/store';
import { StreamElement, RemoveStream } from '../../../states/streams.state';
import { StreamElement, RemoveStream, MoveStreamUp, MoveStreamDown } from '../../../states/streams.state';
@Component({
selector: 'app-stream-edition',
@ -17,17 +17,16 @@ export class StreamEditionComponent implements OnInit {
}
moveLeft(): boolean {
console.log('move left');
this.store.dispatch([new MoveStreamUp(this.streamElement.id)]);
return false;
}
moveRight(): boolean {
console.log('move right');
this.store.dispatch([new MoveStreamDown(this.streamElement.id)]);
return false;
}
delete(): boolean {
console.log('delete');
this.store.dispatch([new RemoveStream(this.streamElement.id)]);
return false;
}

View File

@ -15,6 +15,16 @@ export class RemoveStream {
constructor(public streamId :string) {}
}
export class MoveStreamUp {
static readonly type = '[Streams] Move stream up';
constructor(public streamId :string) {}
}
export class MoveStreamDown {
static readonly type = '[Streams] Move stream down';
constructor(public streamId :string) {}
}
export interface StreamsStateModel {
streams: StreamElement[];
}
@ -49,6 +59,34 @@ export class StreamsState {
streams: [...filteredStreams]
});
}
@Action(MoveStreamUp)
MoveStreamUp(ctx: StateContext<StreamsStateModel>, action: MoveStreamUp){
const state = ctx.getState();
const sourceIndex = state.streams.findIndex(x => x.id === action.streamId);
if(sourceIndex === 0) return;
let streamsCopy = [...state.streams];
streamsCopy[sourceIndex - 1] = state.streams[sourceIndex];
streamsCopy[sourceIndex] = state.streams[sourceIndex - 1];
ctx.patchState({
streams: streamsCopy
});
}
@Action(MoveStreamDown)
MoveStreamDown(ctx: StateContext<StreamsStateModel>, action: MoveStreamDown){
const state = ctx.getState();
const sourceIndex = state.streams.findIndex(x => x.id === action.streamId);
if(sourceIndex === state.streams.length - 1) return;
let streamsCopy = [...state.streams];
streamsCopy[sourceIndex + 1] = state.streams[sourceIndex];
streamsCopy[sourceIndex] = state.streams[sourceIndex + 1];
ctx.patchState({
streams: streamsCopy
});
}
}
export class StreamElement {