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

View File

@ -15,6 +15,16 @@ export class RemoveStream {
constructor(public streamId :string) {} 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 { export interface StreamsStateModel {
streams: StreamElement[]; streams: StreamElement[];
} }
@ -49,6 +59,34 @@ export class StreamsState {
streams: [...filteredStreams] 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 { export class StreamElement {