87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
import { v4 as uuid } from 'uuid';
|
|
|
|
export const DEFAULT_SIZE = {
|
|
width: 30,
|
|
height: 30
|
|
};
|
|
|
|
export function createNotebookImageDomainObject(fullSizeImageURL) {
|
|
const identifier = {
|
|
key: uuid(),
|
|
namespace: ''
|
|
};
|
|
const viewType = 'notebookSnapshotImage';
|
|
|
|
return {
|
|
name: 'Notebook Snapshot Image',
|
|
type: viewType,
|
|
identifier,
|
|
configuration: {
|
|
fullSizeImageURL
|
|
}
|
|
};
|
|
}
|
|
|
|
export function getThumbnailURLFromCanvas(canvas, size = DEFAULT_SIZE) {
|
|
const thumbnailCanvas = document.createElement('canvas');
|
|
thumbnailCanvas.setAttribute('width', size.width);
|
|
thumbnailCanvas.setAttribute('height', size.height);
|
|
const ctx = thumbnailCanvas.getContext('2d');
|
|
ctx.globalCompositeOperation = "copy";
|
|
ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, size.width, size.height);
|
|
|
|
return thumbnailCanvas.toDataURL('image/png');
|
|
}
|
|
|
|
export function getThumbnailURLFromimageUrl(imageUrl, size = DEFAULT_SIZE) {
|
|
return new Promise(resolve => {
|
|
const image = new Image();
|
|
|
|
const canvas = document.createElement('canvas');
|
|
canvas.width = size.width;
|
|
canvas.height = size.height;
|
|
|
|
image.onload = function () {
|
|
canvas.getContext('2d')
|
|
.drawImage(image, 0, 0, size.width, size.height);
|
|
|
|
resolve(canvas.toDataURL('image/png'));
|
|
};
|
|
|
|
image.src = imageUrl;
|
|
});
|
|
}
|
|
|
|
export function saveNotebookImageDomainObject(openmct, object) {
|
|
return new Promise((resolve, reject) => {
|
|
openmct.objects.save(object)
|
|
.then(result => {
|
|
if (result) {
|
|
resolve(object);
|
|
} else {
|
|
reject();
|
|
}
|
|
})
|
|
.catch(e => {
|
|
console.error(e);
|
|
reject();
|
|
});
|
|
});
|
|
}
|
|
|
|
export function updateNotebookImageDomainObject(openmct, identifier, fullSizeImage) {
|
|
openmct.objects.get(identifier)
|
|
.then(domainObject => {
|
|
const configuration = domainObject.configuration;
|
|
configuration.fullSizeImageURL = fullSizeImage.src;
|
|
|
|
openmct.objects.mutate(domainObject, 'configuration', configuration);
|
|
});
|
|
}
|
|
|
|
export function updateNamespaceOfDomainObject(object, namespace) {
|
|
object.identifier.namespace = namespace;
|
|
|
|
return object;
|
|
}
|