fixed room mgmt and recorder mgmt basically working
This commit is contained in:
@@ -15,7 +15,6 @@ api.interceptors.request.use(async function(config) {
|
||||
if (store.getters.isAuthenticated) {
|
||||
const token = store.state.access_token;
|
||||
config.headers.Authorization = `Bearer ${token}`;
|
||||
return config;
|
||||
} else {
|
||||
Vue.$log.warn("the access_token is not valid anymore.");
|
||||
if(store.getters.isRefreshTokenValid){
|
||||
@@ -47,8 +46,8 @@ api.interceptors.request.use(async function(config) {
|
||||
}
|
||||
});
|
||||
}
|
||||
return config;
|
||||
}
|
||||
return config;
|
||||
});
|
||||
|
||||
api.interceptors.response.use(function (response) {
|
||||
|
||||
@@ -7,6 +7,8 @@ const recorderResource = '/recorder';
|
||||
const recorderModelResource = '/recorder/model';
|
||||
const recorderCommandResource = '/recorder/command';
|
||||
|
||||
import {dictEmptyValToNull} from '@/utils';
|
||||
|
||||
export default {
|
||||
getRecorders() {
|
||||
return Repository.get(`${recorderResource}`);
|
||||
@@ -16,12 +18,16 @@ export default {
|
||||
return Repository.get(`${recorderResource}/${recorderId}`);
|
||||
},
|
||||
|
||||
deleteRecorder(recorderId: number) {
|
||||
return Repository.delete(`${recorderResource}/${recorderId}`);
|
||||
},
|
||||
|
||||
createRecorder(recorderData: any) {
|
||||
return Repository.post(`${recorderResource}`, recorderData);
|
||||
return Repository.post(`${recorderResource}`, dictEmptyValToNull(recorderData));
|
||||
},
|
||||
|
||||
updateRecorder(recorderId: number, recorderData: any) {
|
||||
return Repository.put(`${recorderResource}/${recorderId}`, recorderData);
|
||||
return Repository.put(`${recorderResource}/${recorderId}`, dictEmptyValToNull(recorderData));
|
||||
},
|
||||
|
||||
|
||||
@@ -33,12 +39,16 @@ export default {
|
||||
return Repository.get(`${recorderModelResource}/${recorderModelId}`);
|
||||
},
|
||||
|
||||
deleteRecorderModel(recorderModelId: number) {
|
||||
return Repository.delete(`${recorderModelResource}/${recorderModelId}`);
|
||||
},
|
||||
|
||||
createRecorderModel(recorderModelData: any) {
|
||||
return Repository.post(`${recorderModelResource}`, recorderModelData);
|
||||
return Repository.post(`${recorderModelResource}`, dictEmptyValToNull(recorderModelData));
|
||||
},
|
||||
|
||||
updateRecorderModel(recorderModelId: number, recorderModelData: any) {
|
||||
return Repository.put(`${recorderModelResource}/${recorderModelId}`, recorderModelData);
|
||||
return Repository.put(`${recorderModelResource}/${recorderModelId}`, dictEmptyValToNull(recorderModelData));
|
||||
},
|
||||
|
||||
|
||||
@@ -50,11 +60,16 @@ export default {
|
||||
return Repository.get(`${recorderCommandResource}/${recorderCommandId}`);
|
||||
},
|
||||
|
||||
deleteRecorderCommand(recorderCommandId: number) {
|
||||
return Repository.delete(`${recorderCommandResource}/${recorderCommandId}`);
|
||||
},
|
||||
|
||||
createRecorderCommand(recorderCommandData: any) {
|
||||
return Repository.post(`${recorderCommandResource}`, recorderCommandData);
|
||||
return Repository.post(`${recorderCommandResource}`, dictEmptyValToNull(recorderCommandData));
|
||||
},
|
||||
|
||||
updateRecorderCommand(recorderCommandId: number, recorderCommandData: any) {
|
||||
return Repository.put(`${recorderCommandResource}/${recorderCommandId}`, recorderCommandData);
|
||||
return Repository.put(`${recorderCommandResource}/${recorderCommandId}`,
|
||||
dictEmptyValToNull(recorderCommandData));
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
// @ts-ignore
|
||||
import Repository from './Repository';
|
||||
import {dictEmptyValToNull} from '@/utils';
|
||||
|
||||
const resource = '/room';
|
||||
|
||||
@@ -19,10 +20,10 @@ export default {
|
||||
},
|
||||
|
||||
createRoom(roomData: any) {
|
||||
return Repository.post(`${resource}`, roomData);
|
||||
return Repository.post(`${resource}`, dictEmptyValToNull(roomData));
|
||||
},
|
||||
|
||||
updateRoom(roomId: number, roomData: any) {
|
||||
return Repository.put(`${resource}/${roomId}`, roomData);
|
||||
return Repository.put(`${resource}/${roomId}`, dictEmptyValToNull(roomData));
|
||||
},
|
||||
};
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
<b-card class="mb-2" style="max-width: 30rem; min-width:20rem;" v-for="(recorder) in recorders"
|
||||
:header="recorder.name + ' (' + recorder.ip + ' / ' + recorder.network_name + ')'"
|
||||
v-bind:key="recorder.id">
|
||||
{{recorder}}
|
||||
<b-card-text>
|
||||
<h5 class="card-title">{{ $t('name') }}:
|
||||
<span v-if="!formEditField[recorder.id+'_name']">{{recorder.name}}
|
||||
@@ -112,7 +113,7 @@
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control" v-model="form.room">
|
||||
<option disabled value="">No recorder selected</option>
|
||||
<option value="">No recorder selected</option>
|
||||
<option v-for="room in rooms" v-bind:value="room.id">
|
||||
{{ room.name }}
|
||||
</option>
|
||||
@@ -140,8 +141,8 @@
|
||||
$t('no_model_defined')}}</p>
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control" v-model="form.room">
|
||||
<option disabled value="">No recorder selected</option>
|
||||
<select class="form-control" v-model="form.recorder_model">
|
||||
<option value="">No recorder selected</option>
|
||||
<option v-for="recorderModel in recorderModels"
|
||||
v-bind:value="recorderModel.id">
|
||||
{{ recorderModel.name }}
|
||||
@@ -225,7 +226,7 @@
|
||||
<div class="form-group row">
|
||||
<label class="label col-sm-2 col-form-label">{{ $t('recorder_model') }}</label>
|
||||
<div class="col-sm-6">
|
||||
<select class="form-control" v-model="form.recorder_model">
|
||||
<select class="form-control" v-model="form.recorder_model_id">
|
||||
<option disabled value="">No recorder_model selected</option>
|
||||
<option v-for="recorderModel in recorderModels"
|
||||
v-bind:value="recorder_model.id">
|
||||
@@ -238,7 +239,7 @@
|
||||
<div class="form-group row">
|
||||
<label class="label col-sm-2 col-form-label">{{ $t('room') }}</label>
|
||||
<div class="col-sm-6">
|
||||
<select class="form-control" v-model="form.room">
|
||||
<select class="form-control" v-model="form.room_id">
|
||||
<option disabled value="">Not assigned to room</option>
|
||||
<option v-for="room in rooms" v-bind:value="room.id">
|
||||
{{ room.name }}
|
||||
@@ -325,6 +326,8 @@
|
||||
data() {
|
||||
return {
|
||||
tabIndex: 0,
|
||||
updateValues: {},
|
||||
formEditField: {},
|
||||
show_assigned_recorders: false,
|
||||
form: {
|
||||
name: '',
|
||||
|
||||
@@ -112,26 +112,37 @@
|
||||
</small>
|
||||
</p>
|
||||
<hr/>
|
||||
<span v-if="!formEditField[room.id+'_recorder_id']">{{room.recorder_id}}
|
||||
<div v-if="room.recorder">
|
||||
<p class="card-text"><strong>{{ $t('Recorder') }}:</strong> {{room.recorder.name}}
|
||||
<a class="float-right badge badge-pill badge-info">
|
||||
<font-awesome-icon icon="pencil-alt"/>
|
||||
</a></p>
|
||||
({{room.recorder.ip}}) / ({{room.recorder.network_name}})
|
||||
</div>
|
||||
<div v-else>
|
||||
<p class="card-text"><strong>{{ $t('Recorder') }}:</strong> {{
|
||||
$t('no_recorder_defined')}}</p>
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control" v-model="form.recorder">
|
||||
<option disabled value="">No recorder selected</option>
|
||||
</div>
|
||||
<a class="float-right badge badge-pill badge-info">
|
||||
<font-awesome-icon
|
||||
@click="initRoomUpdate(room, 'recorder_id')" icon="pencil-alt"/>
|
||||
</a>
|
||||
</span>
|
||||
<b-form v-else>
|
||||
<b-input-group>
|
||||
<select class="form-control" v-model="updateValues[room.id+'_recorder_id']">
|
||||
<option value="">No recorder selected</option>
|
||||
<option v-for="recorder in recorders" v-bind:value="recorder.id">
|
||||
{{ recorder.name }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<label class="label col-sm-4 col-form-label">{{ $t('recorder') }}</label>
|
||||
</div>
|
||||
<b-input-group-append>
|
||||
<b-button :disabled="errors.has('recorder_id')"
|
||||
@click="updateRoom(room.id, 'recorder_id')"
|
||||
variant="outline-success">
|
||||
<font-awesome-icon icon="check"></font-awesome-icon>
|
||||
</b-button>
|
||||
</b-input-group-append>
|
||||
</b-input-group>
|
||||
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox"
|
||||
v-model="show_assigned_recorders" id="defaultCheck1">
|
||||
@@ -139,7 +150,8 @@
|
||||
Show already assigned recorders
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</b-form>
|
||||
|
||||
</b-card-text>
|
||||
<div slot="footer">
|
||||
<small class="text-muted">
|
||||
@@ -218,8 +230,8 @@
|
||||
<div class="form-group row">
|
||||
<label class="label col-sm-2 col-form-label">{{ $t('recorder') }}</label>
|
||||
<div class="col-sm-6">
|
||||
<select class="form-control" v-model="form.recorder">
|
||||
<option disabled value="">No recorder selected</option>
|
||||
<select class="form-control" v-model="form.recorder_id">
|
||||
<option value="">No recorder selected</option>
|
||||
<option v-for="recorder in recorders" v-bind:value="recorder.id">
|
||||
{{ recorder.name }}
|
||||
</option>
|
||||
@@ -289,11 +301,11 @@
|
||||
formEditField: {},
|
||||
show_assigned_recorders: false,
|
||||
form: {
|
||||
name: '',
|
||||
alternate_name: '',
|
||||
number: '',
|
||||
comment: '',
|
||||
recorder: null,
|
||||
name: null,
|
||||
alternate_name: null,
|
||||
number: null,
|
||||
comment: null,
|
||||
recorder_id: null,
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
@@ -72,6 +72,12 @@ Vue.use(VueMoment);
|
||||
|
||||
Vue.config.productionTip = false;
|
||||
|
||||
|
||||
// @ts-ignore
|
||||
String.prototype.isEmpty = function() {
|
||||
return (this.length === 0 || !this.trim());
|
||||
};
|
||||
|
||||
new Vue({
|
||||
i18n,
|
||||
router,
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
|
||||
import Vue from 'vue';
|
||||
|
||||
// @ts-ignore
|
||||
String.prototype.isEmpty = function() {
|
||||
return (this.length === 0 || !this.trim());
|
||||
};
|
||||
|
||||
export const EventBus = new Vue();
|
||||
|
||||
export function isValidJwt(jwt: any) {
|
||||
@@ -26,3 +31,21 @@ export function getRemainingJwtValiditySeconds(jwt: any) {
|
||||
}
|
||||
return Math.round(diff / 1000 * 100) / 100;
|
||||
}
|
||||
|
||||
export function isEmpty(str: string) {
|
||||
return (0 === str.length || !str.trim());
|
||||
}
|
||||
|
||||
export function dictEmptyValToNull(dict: object): object {
|
||||
const newDict: { [key: string]: string | null | object; } = Object.assign({}, dict);
|
||||
for (const [key, value] of Object.entries(dict)) {
|
||||
if (typeof value === 'string') {
|
||||
if (isEmpty(value)) {
|
||||
newDict[key] = null;
|
||||
}
|
||||
} else if (value && value.constructor === Object) { // check if "dictionary"
|
||||
newDict[key] = dictEmptyValToNull(value);
|
||||
}
|
||||
}
|
||||
return newDict;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user