mirror of
https://github.com/0x1d/esp8266-laser.git
synced 2026-03-22 17:07:32 +01:00
ui
This commit is contained in:
9
frontend/scripts/core/store/DataStore.js
Normal file
9
frontend/scripts/core/store/DataStore.js
Normal file
@@ -0,0 +1,9 @@
|
||||
export default class DataStore {
|
||||
constructor(mediator){
|
||||
this.mediator = mediator;
|
||||
}
|
||||
load(entry){}
|
||||
save(entry){}
|
||||
add(entry){}
|
||||
delete(entry){}
|
||||
}
|
||||
37
frontend/scripts/core/store/RestStore.js
Normal file
37
frontend/scripts/core/store/RestStore.js
Normal file
@@ -0,0 +1,37 @@
|
||||
import $ from 'jquery';
|
||||
import Mediator from '../Mediator';
|
||||
import DataStore from './DataStore';
|
||||
import StoreAction from './StoreAction';
|
||||
|
||||
export default class RestStore extends DataStore {
|
||||
constructor(endpoint, mediator = new Mediator()){
|
||||
super(mediator);
|
||||
this.endpoint = endpoint;
|
||||
}
|
||||
load(entry){
|
||||
return this.request(StoreAction.LOAD, 'GET', entry);
|
||||
}
|
||||
save(entry){
|
||||
return this.request(StoreAction.SAVE, 'POST', entry);
|
||||
}
|
||||
add(entry){
|
||||
return this.request(StoreAction.ADD, 'PUT', entry);
|
||||
}
|
||||
delete(entry){
|
||||
return this.request(StoreAction.DELETE, 'POST', entry);
|
||||
}
|
||||
request(event, type, payload){
|
||||
return $.ajax({
|
||||
url: this.endpoint,
|
||||
type: type,
|
||||
data: payload
|
||||
})
|
||||
.then(JSON.parse)
|
||||
.then((response) => {
|
||||
this.mediator.trigger(event, response);
|
||||
});
|
||||
}
|
||||
on(event, subscriber, context){
|
||||
this.mediator.on(event, subscriber, context);
|
||||
}
|
||||
}
|
||||
6
frontend/scripts/core/store/StoreAction.js
Normal file
6
frontend/scripts/core/store/StoreAction.js
Normal file
@@ -0,0 +1,6 @@
|
||||
export default {
|
||||
LOAD: 'load',
|
||||
SAVE: 'save',
|
||||
ADD: 'add',
|
||||
DELETE: 'delete'
|
||||
}
|
||||
Reference in New Issue
Block a user