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.
75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
// Copyright (C) 2021 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
(() => {
|
|
const serverProxy = require('./server-proxy');
|
|
const { getPreview } = require('./frames');
|
|
|
|
const { Project } = require('./project');
|
|
const { exportDataset } = require('./annotations');
|
|
|
|
function implementProject(projectClass) {
|
|
projectClass.prototype.save.implementation = async function () {
|
|
const trainingProjectCopy = this.trainingProject;
|
|
if (typeof this.id !== 'undefined') {
|
|
// project has been already created, need to update some data
|
|
const projectData = {
|
|
name: this.name,
|
|
assignee_id: this.assignee ? this.assignee.id : null,
|
|
bug_tracker: this.bugTracker,
|
|
labels: [...this._internalData.labels.map((el) => el.toJSON())],
|
|
};
|
|
|
|
if (trainingProjectCopy) {
|
|
projectData.training_project = trainingProjectCopy;
|
|
}
|
|
|
|
await serverProxy.projects.save(this.id, projectData);
|
|
return this;
|
|
}
|
|
|
|
// initial creating
|
|
const projectSpec = {
|
|
name: this.name,
|
|
labels: [...this.labels.map((el) => el.toJSON())],
|
|
};
|
|
|
|
if (this.bugTracker) {
|
|
projectSpec.bug_tracker = this.bugTracker;
|
|
}
|
|
|
|
if (trainingProjectCopy) {
|
|
projectSpec.training_project = trainingProjectCopy;
|
|
}
|
|
|
|
const project = await serverProxy.projects.create(projectSpec);
|
|
return new Project(project);
|
|
};
|
|
|
|
projectClass.prototype.delete.implementation = async function () {
|
|
const result = await serverProxy.projects.delete(this.id);
|
|
return result;
|
|
};
|
|
|
|
projectClass.prototype.preview.implementation = async function () {
|
|
if (!this._internalData.task_ids.length) {
|
|
return '';
|
|
}
|
|
const frameData = await getPreview(this._internalData.task_ids[0]);
|
|
return frameData;
|
|
};
|
|
|
|
projectClass.prototype.annotations.exportDataset.implementation = async function (
|
|
format, saveImages, customName,
|
|
) {
|
|
const result = exportDataset(this, format, customName, saveImages);
|
|
return result;
|
|
};
|
|
|
|
return projectClass;
|
|
}
|
|
|
|
module.exports = implementProject;
|
|
})();
|