|
@@ -127,8 +127,26 @@
|
|
|
let dataObject = {};
|
|
|
dataObject[fieldName] = content;
|
|
|
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);
|
|
|
+ }
|
|
|
|
|
|
quill.on('text-change', onTextChange);
|
|
|
|
|
@@ -258,6 +276,58 @@
|
|
|
}
|
|
|
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');
|