@fleetbase/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
82 lines (73 loc) • 2.01 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
/**
* AvailabilityEditor Component
*
* Allows users to set and manage availability windows for resources.
*
* @example
* <AvailabilityEditor
* @subjectType="driver"
* @subjectUuid={{@driver.id}}
* @onSave={{this.handleAvailabilitySave}}
* />
*/
export default class AvailabilityEditorComponent extends Component {
scheduling;
notifications;
startAt = null;
endAt = null;
isAvailable = true;
preferenceLevel = 3;
reason = '';
notes = '';
rrule = '';
/**
* Save availability
*/
async saveAvailability() {
try {
const data = {
subject_type: this.args.subjectType,
subject_uuid: this.args.subjectUuid,
start_at: this.startAt,
end_at: this.endAt,
is_available: this.isAvailable,
preference_level: this.preferenceLevel,
reason: this.reason,
notes: this.notes,
rrule: this.rrule,
};
const availability = await this.scheduling.setAvailability.perform(data);
if (this.args.onSave) {
this.args.onSave(availability);
}
this.resetForm();
} catch (error) {
console.error('Failed to save availability:', error);
}
}
/**
* Reset form
*/
resetForm() {
this.startAt = null;
this.endAt = null;
this.isAvailable = true;
this.preferenceLevel = 3;
this.reason = '';
this.notes = '';
this.rrule = '';
}
/**
* Update field
*/
updateField(field, value) {
this[field] = value;
}
}