Skip to content
Snippets Groups Projects
Commit aa032067 authored by Alexander Rose's avatar Alexander Rose
Browse files

replaced immutable.js with immer; updated packages

parent 3f297cf6
No related branches found
No related tags found
No related merge requests found
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -5,7 +5,7 @@
* Copyright (c) 2016 - now David Sehnal, licensed under Apache 2.0, See LICENSE file for more info.
*/
import { Map } from 'immutable'
import produce from 'immer'
import { filter } from 'rxjs/operators';
import { Controller } from '../controller'
......@@ -21,7 +21,7 @@ export interface JobInfo {
}
export interface JobsState {
jobs: Map<number, JobInfo>
jobs: { [k: number]: JobInfo }
}
export class JobsController extends Controller<JobsState> {
......@@ -30,38 +30,42 @@ export class JobsController extends Controller<JobsState> {
let jobs = this.latestState.jobs!;
if (!isWatched) {
if (jobs.has(state.jobId)) {
jobs = jobs.delete(state.jobId);
if (jobs[state.jobId] !== undefined) {
jobs = produce(jobs, _jobs => { delete _jobs[state.jobId] });
this.setState({ jobs });
}
return;
}
jobs = jobs.set(state.jobId, {
name: state.name,
message: state.message,
abort: state.abort
});
jobs = produce(jobs, _jobs => {
_jobs[state.jobId] = {
name: state.name,
message: state.message,
abort: state.abort
};
})
this.setState({ jobs });
}
private started(job: Job.Info) {
this.setState({
jobs: this.latestState.jobs!.set(job.id, { name: job.name, message: 'Running...' })
jobs: produce(this.latestState.jobs!, _jobs => {
_jobs[job.id] = { name: job.name, message: 'Running...' }
})
});
}
private completed(taskId: number) {
if (!this.latestState.jobs!.has(taskId)) return;
if (!this.latestState.jobs![taskId]) return;
this.setState({
jobs: this.latestState.jobs!.delete(taskId)
jobs: produce(this.latestState.jobs!, _jobs => { delete _jobs[taskId] })
});
}
constructor(context: Context, private type: Job.Type) {
super(context, {
jobs: Map<number, JobInfo>()
jobs: {}
});
JobEvents.StateUpdated.getStream(this.context)
......
......@@ -5,18 +5,20 @@
* Copyright (c) 2016 - now David Sehnal, licensed under Apache 2.0, See LICENSE file for more info.
*/
import { List } from 'immutable'
import produce from 'immer'
import { Controller } from '../controller'
import { Context } from '../../context/context';
import { LogEvent } from '../../event/basic';
import { Logger } from '../../service/logger';
export class LogController extends Controller<{ entries: List<Logger.Entry> }> {
export class LogController extends Controller<{ entries: Logger.Entry[] }> {
constructor(context: Context) {
super(context, { entries: List<Logger.Entry>() });
super(context, { entries: [] });
LogEvent.getStream(this.context)
.subscribe(e => this.setState({ entries: this.latestState.entries.push(e.data) }))
.subscribe(e => this.setState({
entries: produce(this.latestState.entries, _entries => { _entries.push(e.data) })
}))
}
}
\ No newline at end of file
......@@ -30,10 +30,10 @@ export class Overlay extends View<JobsController, {}, {}> {
render() {
const state = this.controller.latestState;
if (!state.jobs!.count()) return <div className='molstar-empty-control' />
if (!Object.keys(state.jobs).length) return <div className='molstar-empty-control' />
const jobs: any[] = [];
state.jobs!.forEach((t, k) => jobs.push(<JobState key={k} info={t!} />));
Object.keys(state.jobs).forEach(k => jobs.push(<JobState key={k} info={state.jobs[parseInt(k)]} />));
return <div className='molstar-overlay'>
<div className='molstar-overlay-background' />
......@@ -52,10 +52,10 @@ export class BackgroundJobs extends View<JobsController, {}, {}> {
render() {
const state = this.controller.latestState;
if (!state.jobs!.count()) return <div className='molstar-empty-control' />
if (!Object.keys(state.jobs).length) return <div className='molstar-empty-control' />
const jobs: any[] = [];
state.jobs!.forEach((t, k) => jobs.push(<JobState key={k} info={t!} isSmall={true} />));
Object.keys(state.jobs).forEach(k => jobs.push(<JobState key={k} info={state.jobs[parseInt(k)]} isSmall={true} />));
return <div className='molstar-background-jobs'>
{jobs}
......
......@@ -8,8 +8,6 @@
"noUnusedLocals": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
//"keyofStringsOnly": true,
// temp fix for immutable package: has(key: string): key is keyof TProps; => has(key: string | number | Symbol): key is keyof TProps;
//"downlevelIteration": true,
"jsx": "react",
"lib": [ "es6", "dom", "esnext.asynciterable", "es2016" ],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment