You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
2.7 KiB
JavaScript

class DateWidget extends BaseWidget {
$el;
constructor(data, renderer) {
super(data, renderer);
this.makeLayout({
type: 'input',
class: 'w_date',
name: 'el',
style: {
color: 'var(--prim)'
},
events: {
click: () => {
this.$el.showPicker();
},
change: () => {
this.set(getUnix(this.$el));
},
},
});
this.$el.type = 'date';
this.update(data);
}
update(data) {
super.update(data);
if ('value' in data) this.$el.value = new Date(data.value * 1000).toISOString().split('T')[0];
if ('color' in data) this.$el.style.color = intToCol(data.color);
}
}
class TimeWidget extends BaseWidget {
$el;
constructor(data, renderer) {
super(data, renderer);
this.makeLayout({
type: 'input',
class: 'w_date',
name: 'el',
style: {
color: 'var(--prim)'
},
events: {
click: () => {
this.$el.showPicker();
},
change: () => {
this.set(getUnix(this.$el));
},
},
});
this.$el.type = 'time';
this.$el.step = 1;
this.update(data);
}
update(data) {
super.update(data);
if ('value' in data) this.$el.value = new Date(data.value * 1000).toISOString().split('T')[1].split('.')[0];
if ('color' in data) this.$el.style.color = intToCol(data.color);
}
}
class DateTimeWidget extends BaseWidget {
$el;
constructor(data, renderer) {
super(data, renderer);
this.makeLayout({
type: 'input',
class: 'w_date',
name: 'el',
style: {
color: 'var(--prim)'
},
events: {
click: () => {
this.$el.showPicker();
},
change: () => {
this.set(getUnix(this.$el));
},
},
});
this.$el.type = 'datetime-local';
this.$el.step = 1;
this.update(data);
}
update(data) {
super.update(data);
if ('value' in data) this.$el.value = new Date(data.value * 1000).toISOString().split('.')[0];
if ('color' in data) this.$el.style.color = intToCol(data.color);
}
}
function getUnix(arg) {
return Math.floor(arg.valueAsNumber / 1000);
}
Renderer.register('date', DateWidget);
Renderer.register('time', TimeWidget);
Renderer.register('datetime', DateTimeWidget);