UNPKG

koco-xyz

Version:

Dialogs for displaying, choosing, and editing images provided in scoop idiom.

203 lines (150 loc) 6.97 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _concreteImageDialog = require('text!./concrete-image-dialog.html'); var _concreteImageDialog2 = _interopRequireDefault(_concreteImageDialog); var _knockout = require('knockout'); var _knockout2 = _interopRequireDefault(_knockout); var _jquery = require('jquery'); var _jquery2 = _interopRequireDefault(_jquery); var _imageDialogUiBase = require('../image-dialog-ui-base'); var _imageDialogUiBase2 = _interopRequireDefault(_imageDialogUiBase); var _contentDialogBaseViewmodel = require('content-dialog-base-viewmodel'); var _contentDialogBaseViewmodel2 = _interopRequireDefault(_contentDialogBaseViewmodel); var _mappingUtilities = require('mapping-utilities'); var _mappingUtilities2 = _interopRequireDefault(_mappingUtilities); var _signalEmitter = require('signal-emitter'); var _signalEmitter2 = _interopRequireDefault(_signalEmitter); var _i18next = require('i18next'); var _i18next2 = _interopRequireDefault(_i18next); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } //Ce dialog est destiné à fonctionner avec tiny-mce //il ne recoit pas en input un conceptual-image, ni un concrete-image //il recoit l'url de l'image et fait un appel à l'api pour obtenir l'information nécessaire //en ce sens, il devrait peut-être être renommé (on pourrait éventullement avoir un vrai concrete-image-dialog) var defaultContentTypeId = '20'; var defaultItem = { id: null, alt: '', title: '', legend: '', imageCredits: '', pressAgency: '', imageCollection: '', concreteImages: [], contentTypeId: defaultContentTypeId }; var ConcreteImageDialogViewModel = function ConcreteImageDialogViewModel(settings /*, componentInfo*/) { var self = this; self.params = self.getParams(settings); self.api = self.params.api; self.i18n = _i18next2.default; var contentDialogViewModelParams = { dialogTitle: 'Images', originalItem: _knockout2.default.observable(), defaultItem: defaultItem, close: settings.close, isSearchable: true, api: self.api }; self.translated = { closeLabel: self.i18n.t('koco-image-dialogs.dialog-cancel'), saveLabel: self.i18n.t('koco-image-dialogs.dialog-save'), altLabel: self.i18n.t('koco-image-dialogs.concrete-dialog-edit-label-alt'), legendLabel: self.i18n.t('koco-image-dialogs.concrete-dialog-edit-label-legend'), creditsLabel: self.i18n.t('koco-image-dialogs.concrete-dialog-edit-label-credits'), agencyLabel: self.i18n.t('koco-image-dialogs.concrete-dialog-edit-label-agency'), alignmentLabel: self.i18n.t('koco-image-dialogs.concrete-dialog-edit-label-alignment'), leftLabel: self.i18n.t('koco-image-dialogs.concrete-dialog-edit-label-left'), centreLabel: self.i18n.t('koco-image-dialogs.concrete-dialog-edit-label-center'), rightLabel: self.i18n.t('koco-image-dialogs.concrete-dialog-edit-label-right') }; _contentDialogBaseViewmodel2.default.call(self, contentDialogViewModelParams); self.canDeleteImage = _knockout2.default.pureComputed(self.canDeleteImage.bind(self)); self.koDisposer.add(self.canDeleteImage); var align = 'left'; if (self.params && self.params.align) { align = self.params.align; } self.align = _knockout2.default.observable(align); self.imageForLineups = _knockout2.default.observable(false); self.selectedConcreteImage = _knockout2.default.observable(); self.isCloudinary = _knockout2.default.pureComputed(self.getIsCloudinary.bind(self)); self.koDisposer.add(self.isCloudinary); self.activate(); }; ConcreteImageDialogViewModel.prototype = Object.create(_imageDialogUiBase2.default.prototype); ConcreteImageDialogViewModel.prototype.constructor = ConcreteImageDialogViewModel; ConcreteImageDialogViewModel.prototype.start = function () { var self = this; var concreteImageUrl = _knockout2.default.unwrap(self.params.concreteImageUrl); if (concreteImageUrl) { return self.api.getJson('images/selected', { data: _jquery2.default.param({ url: concreteImageUrl }, true), success: function success(conceptualImageWithSelectedImage) { if (conceptualImageWithSelectedImage && conceptualImageWithSelectedImage.conceptualImage) { var originalItem = conceptualImageWithSelectedImage.conceptualImage; if (self.params.alt) { originalItem.alt = self.params.alt; } if (self.params.legend) { originalItem.legend = self.params.legend; } if (self.params.pressAgency) { originalItem.pressAgency = self.params.pressAgency; } if (self.params.imageCredits) { originalItem.imageCredits = self.params.imageCredits; } self.selectedConcreteImage(conceptualImageWithSelectedImage.selectedImage); self.originalItem(originalItem); self.selectItem(originalItem); } else { self.selectItem(null); } } }); } else { self.selectItem(null); } }; ConcreteImageDialogViewModel.prototype.selectItem = function (inputModel) { var self = this; self.selectedConcreteImage(null); _imageDialogUiBase2.default.prototype.selectItem.call(self, inputModel); }; ConcreteImageDialogViewModel.prototype.getSearchOnDisplay = function () { var self = this; return !_knockout2.default.unwrap(self.params.concreteImageUrl); }; ConcreteImageDialogViewModel.prototype.toOutputModel = function () { var self = this; var conceptualImage = _contentDialogBaseViewmodel2.default.prototype.toOutputModel.call(self); var concreteImage = _mappingUtilities2.default.toJS(self.selectedConcreteImage); if (self.imageForLineups()) { _signalEmitter2.default.dispatch('image:imageForLineups', [conceptualImage]); } return { conceptualImage: conceptualImage, concreteImage: concreteImage, align: self.align() }; }; ConcreteImageDialogViewModel.prototype.validate = function () { var self = this; if (!self.selectedConcreteImage()) { return self.i18n.t('koco-image-dialogs.concrete-image-dialog-select-image-format'); } _contentDialogBaseViewmodel2.default.prototype.validate.call(self); }; exports.default = { viewModel: { createViewModel: function createViewModel(params, componentInfo) { return new ConcreteImageDialogViewModel(params, componentInfo); } }, template: _concreteImageDialog2.default };