I am having trouble creating the right object. I have a calendar that stores the hours. He wants timeTable to hold such an object, for example
"timeTable":{
"0": [{"from":"08:00","to":"12:00"}, {"from":"14:00","to":"18:00"}],
"1": [{"from":"08:00","to":"16:00"}]
}
How, after clicking the save button, send such an object to:
timeTable: Map<number, Array<HourScheduleDefinitionModel>>;
interface:
interface HourScheduleDefinitionModel {
from: string;
to: string;
}
https://stackblitz.com/edit/angular-ivy-e92ezv?file=src/app/app.component.ts
CodePudding user response:
Here's a working example of adding a new map to your object storage. Please note that the timeTable
type is not used in the code as the comment of @AluanHaddad is the same as what I was trying to explain.
var hours = {"timeTable":{
"0": [{"from":"08:00","to":"12:00"}, {"from":"14:00","to":"18:00"}],
"1": [{"from":"08:00","to":"16:00"}]
}};
interface HourScheduleDefinitionModel {
from: string;
to: string;
}
var newHour: HourScheduleDefinitionModel = {
from: "09:00",
to: "10:00"
}
var key = 2;
var value = [newHour];
hours.timeTable[key.toString()] = value
console.log(hours)
CodePudding user response:
I think you want an array (indexed by numbers) instead of an object (indexed by strings):
interface HourScheduleDefinitionModel {
from: string;
to: string;
}
type TimeTable = (HourScheduleDefinitionModel[])[];
const tt: TimeTable = [
[{"from":"08:00","to":"12:00"}, {"from":"14:00","to":"18:00"}], // 0
[{"from":"08:00","to":"16:00"}], // 1
];
console.log(tt[0]);
console.log(tt[1]);
CodePudding user response:
const getTimeline = () => {
result = []
for(item of data){
var start = 0, timeline = [];
for(var i = 0; i < item.items.length; i ){
if(item.items[i] === 1){
if(start === 0) {
start = i;
}
}else{
if(start !== 0){
timeline.push({"from": start < 10 ? "0" start ":00" : start ":00" , "to": i < 10 ? "0" i ":00" : i ":00"})
start = 0;
}
}
if(start !== 0 && i === item.items.length - 1){
timeline.push({"from": start < 10 ? "0" start ":00" : start ":00" , "to": "00:00"})
}
}
result.push({
day: item.name,
timeline : timeline
})
}
return result;
}
example data :-
data = [
{
name: 'Monday',
items: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
active: true
},
{
name: 'Tuesday',
items: [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
active: true
}
]
result :-
console.log(getTimeline(data));
[
{
day: 'Monday',
timeline: [
{ from: '01:00', to: '02:00' },
{ from: '03:00', to: '04:00' },
{ from: '20:00', to: '00:00' }
]
},
{
day: 'Tuesday',
timeline: [ { from: '01:00', to: '04:00' }, { from: '20:00', to: '21:00' } ]
}
]