ref
This commit is contained in:
@@ -31,6 +31,7 @@
|
||||
import View from 'view';
|
||||
import moment from 'moment';
|
||||
import * as FullCalendar from 'fullcalendar';
|
||||
import RecordModal from 'helpers/record-modal';
|
||||
|
||||
/**
|
||||
* @typedef {import('@fullcalendar/core/internal-common.js').EventImpl} EventImpl
|
||||
@@ -901,38 +902,31 @@ class CalendarView extends View {
|
||||
|
||||
this.calendar.unselect();
|
||||
},
|
||||
eventClick: info => {
|
||||
eventClick: async info => {
|
||||
const event = info.event;
|
||||
|
||||
const scope = event.extendedProps.scope;
|
||||
const recordId = event.extendedProps.recordId;
|
||||
|
||||
const viewName = this.getMetadata().get(['clientDefs', scope, 'modalViews', 'detail']) ||
|
||||
'views/modals/detail';
|
||||
const helper = new RecordModal();
|
||||
|
||||
Espo.Ui.notifyWait();
|
||||
/** @type {import('views/modals/detail').default} */
|
||||
let modalView;
|
||||
|
||||
this.createView('quickView', viewName, {
|
||||
scope: scope,
|
||||
modalView = await helper.showDetail(this, {
|
||||
entityType: scope,
|
||||
id: recordId,
|
||||
removeDisabled: false,
|
||||
}, view => {
|
||||
view.render();
|
||||
view.notify(false);
|
||||
|
||||
this.listenToOnce(view, 'after:destroy', model => {
|
||||
this.removeModel(model);
|
||||
});
|
||||
|
||||
this.listenTo(view, 'after:save', (model, o) => {
|
||||
o = o || {};
|
||||
|
||||
afterSave: (model, o) => {
|
||||
if (!o.bypassClose) {
|
||||
view.close();
|
||||
modalView.close();
|
||||
}
|
||||
|
||||
this.updateModel(model);
|
||||
});
|
||||
},
|
||||
afterDestroy: model => {
|
||||
this.removeModel(model);
|
||||
},
|
||||
});
|
||||
},
|
||||
datesSet: () => {
|
||||
|
||||
@@ -66,8 +66,9 @@ class RecordModalHelper {
|
||||
* entityType: string,
|
||||
* model?: import('model').default,
|
||||
* editDisabled?: boolean,
|
||||
* removeDisabled?: boolean,
|
||||
* rootUrl?: string,
|
||||
* afterSave?: function(import('model').default),
|
||||
* afterSave?: function(import('model').default, {bypassClose: boolean}),
|
||||
* afterDestroy?: function(import('model').default),
|
||||
* }} params
|
||||
* @return {Promise<import('views/modals/detail').default>}
|
||||
@@ -91,14 +92,16 @@ class RecordModalHelper {
|
||||
const viewName = this.metadata.get(`clientDefs.${entityType}.modalViews.detail`) ||
|
||||
'views/modals/detail';
|
||||
|
||||
Espo.Ui.notifyWait()
|
||||
Espo.Ui.notifyWait();
|
||||
|
||||
/** @type {module:views/modals/detail~options} */
|
||||
const options = {
|
||||
entityType: entityType,
|
||||
model: model,
|
||||
id: id,
|
||||
quickEditDisabled: params.editDisabled,
|
||||
rootUrl: params.rootUrl,
|
||||
removeDisabled: params.removeDisabled,
|
||||
};
|
||||
|
||||
Espo.Ui.notifyWait();
|
||||
@@ -110,7 +113,9 @@ class RecordModalHelper {
|
||||
view.listenToOnce(modalView, 'remove', () => view.clearView('modal'));
|
||||
|
||||
if (params.afterSave) {
|
||||
modalView.listenTo(modalView, 'after:save', model => params.afterSave(model));
|
||||
modalView.listenTo(modalView, 'after:save', (model, /** Record */o) => {
|
||||
params.afterSave(model, {bypassClose: !!o.bypassClose});
|
||||
});
|
||||
}
|
||||
|
||||
if (params.afterDestroy) {
|
||||
@@ -135,7 +140,7 @@ class RecordModalHelper {
|
||||
* rootUrl?: string,
|
||||
* noFullForm?: boolean,
|
||||
* returnUrl?: string,
|
||||
* afterSave?: function(import('model').default),
|
||||
* afterSave?: function(import('model').default, {bypassClose: boolean}),
|
||||
* returnDispatchParams?: {
|
||||
* controller: string,
|
||||
* action: string|null,
|
||||
@@ -153,7 +158,7 @@ class RecordModalHelper {
|
||||
const viewName = this.metadata.get(`clientDefs.${entityType}.modalViews.edit`) ||
|
||||
'views/modals/edit';
|
||||
|
||||
/** @type {module:views/modals/detail~options} */
|
||||
/** @type {module:views/modals/edit~options} */
|
||||
const options = {
|
||||
entityType: entityType,
|
||||
id: id,
|
||||
@@ -176,7 +181,9 @@ class RecordModalHelper {
|
||||
modalView.listenToOnce(modalView, 'remove', () => view.clearView('modal'));
|
||||
|
||||
if (params.afterSave) {
|
||||
modalView.listenTo(modalView, 'after:save', model => params.afterSave(model));
|
||||
modalView.listenTo(modalView, 'after:save', (model, /** Record */o) => {
|
||||
params.afterSave(model, {bypassClose: !!o.bypassClose});
|
||||
});
|
||||
}
|
||||
|
||||
await modalView.render();
|
||||
@@ -197,7 +204,7 @@ class RecordModalHelper {
|
||||
* returnUrl?: string,
|
||||
* relate?: model:model~setRelateItem | model:model~setRelateItem[],
|
||||
* attributes?: Record.<string, *>,
|
||||
* afterSave?: function(import('model').default),
|
||||
* afterSave?: function(import('model').default, {bypassClose: boolean}),
|
||||
* returnDispatchParams?: {
|
||||
* controller: string,
|
||||
* action: string|null,
|
||||
@@ -237,7 +244,9 @@ class RecordModalHelper {
|
||||
modalView.listenToOnce(modalView, 'remove', () => view.clearView('modal'));
|
||||
|
||||
if (params.afterSave) {
|
||||
modalView.listenTo(modalView, 'after:save', model => params.afterSave(model));
|
||||
modalView.listenTo(modalView, 'after:save', (model, /** Record */o) => {
|
||||
params.afterSave(model, {bypassClose: !!o.bypassClose});
|
||||
});
|
||||
}
|
||||
|
||||
await modalView.render();
|
||||
|
||||
@@ -132,7 +132,7 @@ class DetailModalView extends ModalView {
|
||||
this.editDisabled = this.options.editDisabled;
|
||||
}
|
||||
|
||||
if ('removeDisabled' in this.options) {
|
||||
if (this.options.removeDisabled !== undefined) {
|
||||
this.removeDisabled = this.options.removeDisabled;
|
||||
}
|
||||
|
||||
|
||||
@@ -763,26 +763,16 @@ class RelationshipPanelView extends BottomPanelView {
|
||||
*/
|
||||
actionEditRelated(data) {
|
||||
const id = data.id;
|
||||
const scope = this.collection.get(id).name;
|
||||
const entityType = this.collection.get(id).entityType;
|
||||
|
||||
const viewName = this.getMetadata().get('clientDefs.' + scope + '.modalViews.edit') ||
|
||||
'views/modals/edit';
|
||||
const helper = new RecordModal();
|
||||
|
||||
Espo.Ui.notifyWait();
|
||||
|
||||
this.createView('quickEdit', viewName, {
|
||||
scope: scope,
|
||||
helper.showEdit(this, {
|
||||
entityType: entityType,
|
||||
id: id,
|
||||
}, (view) => {
|
||||
view.once('after:render', () => {
|
||||
Espo.Ui.notify(false);
|
||||
});
|
||||
|
||||
view.render();
|
||||
|
||||
view.once('after:save', () => {
|
||||
afterSave: () => {
|
||||
this.collection.fetch();
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user