|
@@ -1,12 +1,12 @@
|
|
<script>
|
|
<script>
|
|
(function() {
|
|
(function() {
|
|
|
|
|
|
- window.updateAllSegmentsInResponse = function(_response, _updateListeners = true) {
|
|
|
|
|
|
+ window.updateAllSegmentsInResponse = function(_response, _updateListeners = true, _updateOnlySummary = false) {
|
|
if(!hasResponseError(_response)) {
|
|
if(!hasResponseError(_response)) {
|
|
|
|
|
|
// refresh primary segment (where uid is _response.data.uid)
|
|
// refresh primary segment (where uid is _response.data.uid)
|
|
if(_response.data && _response.data.uid) {
|
|
if(_response.data && _response.data.uid) {
|
|
- updateSegmentByUid(_response.data.uid, _response.data.summaryHtml, _response.data.editHtml);
|
|
|
|
|
|
+ updateSegmentByUid(_response.data.uid, _response.data.summaryHtml, _response.data.editHtml, _updateOnlySummary);
|
|
}
|
|
}
|
|
|
|
|
|
// refresh listening segments
|
|
// refresh listening segments
|
|
@@ -19,7 +19,7 @@
|
|
$.post('/api/visit/updateSegmentHtml', {
|
|
$.post('/api/visit/updateSegmentHtml', {
|
|
segmentUid: _response.data.listenerSegmentUids[i]
|
|
segmentUid: _response.data.listenerSegmentUids[i]
|
|
}, _data => {
|
|
}, _data => {
|
|
- updateAllSegmentsInResponse(_data, false);
|
|
|
|
|
|
+ updateAllSegmentsInResponse(_data, false, _updateOnlySummary);
|
|
|
|
|
|
// ugly hack!
|
|
// ugly hack!
|
|
if(listenerSegmentTemplateName === 'medrisk_vigilence') {
|
|
if(listenerSegmentTemplateName === 'medrisk_vigilence') {
|
|
@@ -37,11 +37,11 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- window.updateSegmentByUid = function(_uid, _summaryHtml, _editHtml) {
|
|
|
|
|
|
+ window.updateSegmentByUid = function(_uid, _summaryHtml, _editHtml, _updateOnlySummary) {
|
|
let segment = $('.note-section[data-segment-uid="' + _uid + '"]');
|
|
let segment = $('.note-section[data-segment-uid="' + _uid + '"]');
|
|
if(segment && segment.length) {
|
|
if(segment && segment.length) {
|
|
segment.find('.summary-container').html(_summaryHtml);
|
|
segment.find('.summary-container').html(_summaryHtml);
|
|
- segment.find('.edit-container').html(_editHtml);
|
|
|
|
|
|
+ if(!_updateOnlySummary) segment.find('.edit-container').html(_editHtml);
|
|
|
|
|
|
// special case for lifestyle
|
|
// special case for lifestyle
|
|
let popupContainer = $('[stag-popup-key="segment-popup-' + segment.attr('data-segment-template-name') + '"] .ls-segment-edit-html');
|
|
let popupContainer = $('[stag-popup-key="segment-popup-' + segment.attr('data-segment-template-name') + '"] .ls-segment-edit-html');
|
|
@@ -49,15 +49,17 @@
|
|
popupContainer.html(_editHtml);
|
|
popupContainer.html(_editHtml);
|
|
}
|
|
}
|
|
|
|
|
|
- initRTEs(segment);
|
|
|
|
- initSegmentMoes(segment);
|
|
|
|
- initMoes();
|
|
|
|
- initStagSuggest();
|
|
|
|
- if(window.segmentInitializers) {
|
|
|
|
- let internalName = segment.attr('data-segment-template-name');
|
|
|
|
- if(window.segmentInitializers.hasOwnProperty(internalName) &&
|
|
|
|
- typeof window.segmentInitializers[internalName] === 'function') {
|
|
|
|
- window.segmentInitializers[internalName].call(window);
|
|
|
|
|
|
+ if(!_updateOnlySummary) {
|
|
|
|
+ initRTEs(segment);
|
|
|
|
+ initSegmentMoes(segment);
|
|
|
|
+ initMoes();
|
|
|
|
+ initStagSuggest();
|
|
|
|
+ if(window.segmentInitializers) {
|
|
|
|
+ let internalName = segment.attr('data-segment-template-name');
|
|
|
|
+ if(window.segmentInitializers.hasOwnProperty(internalName) &&
|
|
|
|
+ typeof window.segmentInitializers[internalName] === 'function') {
|
|
|
|
+ window.segmentInitializers[internalName].call(window);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -122,13 +124,36 @@
|
|
|
|
|
|
quill.root.innerHTML = existingContent;
|
|
quill.root.innerHTML = existingContent;
|
|
|
|
|
|
- let onTextChange = function(delta, oldDelta, source) {
|
|
|
|
|
|
+ let setValue = function(delta, oldDelta, source) {
|
|
var content = quill.root.innerHTML;
|
|
var content = quill.root.innerHTML;
|
|
let dataObject = {};
|
|
let dataObject = {};
|
|
dataObject[fieldName] = content;
|
|
dataObject[fieldName] = content;
|
|
var dataValue = JSON.stringify(dataObject);
|
|
var dataValue = JSON.stringify(dataObject);
|
|
- $(el).closest('.note-section').find('input[name=data]').val(dataValue);
|
|
|
|
- };
|
|
|
|
|
|
+ let pElem = $(el).closest('[visit-moe]');
|
|
|
|
+ if(!pElem.length) {
|
|
|
|
+ pElem = $(el).closest('form');
|
|
|
|
+ }
|
|
|
|
+ let v = pElem.find('input[name=data]').val();
|
|
|
|
+ if(!!v) {
|
|
|
|
+ try {
|
|
|
|
+ v = JSON.parse(v);
|
|
|
|
+ v[fieldName] = content;
|
|
|
|
+ v = JSON.stringify(v);
|
|
|
|
+ }
|
|
|
|
+ catch (e) {
|
|
|
|
+ v = JSON.stringify(dataObject);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ v = JSON.stringify(dataObject);
|
|
|
|
+ }
|
|
|
|
+ pElem.find('input[name=data]').val(v);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let onTextChange = function(delta, oldDelta, source) {
|
|
|
|
+ setValue(delta, oldDelta, source);
|
|
|
|
+ $(el).trigger('rich-text-input');
|
|
|
|
+ }
|
|
|
|
|
|
quill.on('text-change', onTextChange);
|
|
quill.on('text-change', onTextChange);
|
|
|
|
|
|
@@ -139,7 +164,7 @@
|
|
.attr('with-shortcuts', 1);
|
|
.attr('with-shortcuts', 1);
|
|
|
|
|
|
// set value initially
|
|
// set value initially
|
|
- onTextChange();
|
|
|
|
|
|
+ setValue();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
@@ -258,6 +283,58 @@
|
|
}
|
|
}
|
|
return false;
|
|
return false;
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ const debounce = (func, wait) => {
|
|
|
|
+ let timeout;
|
|
|
|
+ return function executedFunction(...args) {
|
|
|
|
+ const later = () => {
|
|
|
|
+ clearTimeout(timeout);
|
|
|
|
+ func(...args);
|
|
|
|
+ };
|
|
|
|
+ clearTimeout(timeout);
|
|
|
|
+ timeout = setTimeout(later, wait);
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ let debouncedSaver = debounce(function(_trigger) {
|
|
|
|
+ $('.autosave-indicator').removeClass('show');
|
|
|
|
+ $('.autosave-indicator.saving').addClass('show');
|
|
|
|
+ saveVisitForm(_trigger, true, false, () => {
|
|
|
|
+ $('.autosave-indicator').removeClass('show');
|
|
|
|
+ $('.autosave-indicator.saved').addClass('show');
|
|
|
|
+ window.setTimeout(() => {
|
|
|
|
+ $('.autosave-indicator').removeClass('show');
|
|
|
|
+ }, 1000);
|
|
|
|
+ });
|
|
|
|
+ }, 500);
|
|
|
|
+
|
|
|
|
+ // auto save for segments with edit-mode
|
|
|
|
+ $(document).off('input.auto-save-input', '.visit-segment.edit[data-segment-template-name] [visit-moe] form input[type="text"]');
|
|
|
|
+ $(document).on('input.auto-save-input', '.visit-segment.edit[data-segment-template-name] [visit-moe] form input[type="text"]', function () {
|
|
|
|
+ debouncedSaver(this);
|
|
|
|
+ });
|
|
|
|
+ $(document).off('change.auto-save-select-change', '.visit-segment.edit[data-segment-template-name] [visit-moe] form select');
|
|
|
|
+ $(document).on('change.auto-save-select-change', '.visit-segment.edit[data-segment-template-name] [visit-moe] form select', function () {
|
|
|
|
+ debouncedSaver(this);
|
|
|
|
+ });
|
|
|
|
+ $(document).off('change.auto-save-checkbox-change', '.visit-segment.edit[data-segment-template-name] [visit-moe] form input[type="checkbox"]');
|
|
|
|
+ $(document).on('change.auto-save-checkbox-change', '.visit-segment.edit[data-segment-template-name] [visit-moe] form input[type="checkbox"]', function () {
|
|
|
|
+ debouncedSaver(this);
|
|
|
|
+ });
|
|
|
|
+ $(document).off('change.auto-save-radio-change', '.visit-segment.edit[data-segment-template-name] [visit-moe] form input[type="radio"]');
|
|
|
|
+ $(document).on('change.auto-save-radio-change', '.visit-segment.edit[data-segment-template-name] [visit-moe] form input[type="radio"]', function () {
|
|
|
|
+ debouncedSaver(this);
|
|
|
|
+ });
|
|
|
|
+ $(document).off('input.auto-save-textarea-input', '.visit-segment.edit[data-segment-template-name] [visit-moe] form textarea');
|
|
|
|
+ $(document).on('input.auto-save-textarea-input', '.visit-segment.edit[data-segment-template-name] [visit-moe] form textarea', function () {
|
|
|
|
+ debouncedSaver(this);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // NOTE: this doesn't work yet
|
|
|
|
+ $(document).off('rich-text-input.auto-save-rich-text-input', '.visit-segment.edit[data-segment-template-name] [visit-moe] form [note-rte]');
|
|
|
|
+ $(document).on('rich-text-input.auto-save-rich-text-input', '.visit-segment.edit[data-segment-template-name] [visit-moe] form [note-rte]', function () {
|
|
|
|
+ debouncedSaver(this);
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
addMCInitializer('note-segments-list', init, '#note-segments-list');
|
|
addMCInitializer('note-segments-list', init, '#note-segments-list');
|