|
@@ -123,7 +123,7 @@
|
|
|
</div>
|
|
|
<div class="mb-2">
|
|
|
<label class="text-secondary text-sm mb-1">Clause Text</label>
|
|
|
- <input type="text" class="form-control form-control-sm" name="clauseText">
|
|
|
+ <textarea type="text" class="form-control form-control-sm" name="clauseText"></textarea>
|
|
|
</div>
|
|
|
<div class="d-flex align-items-center">
|
|
|
<button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
|
|
@@ -167,7 +167,7 @@
|
|
|
</div>
|
|
|
<div class="mb-2">
|
|
|
<label class="text-secondary text-sm mb-1">Clause Text</label>
|
|
|
- <input type="text" class="form-control form-control-sm" name="clauseText">
|
|
|
+ <textarea type="text" class="form-control form-control-sm" name="clauseText"></textarea>
|
|
|
</div>
|
|
|
<div class="d-flex align-items-center">
|
|
|
<button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
|
|
@@ -433,7 +433,7 @@
|
|
|
|
|
|
function fillAndInvokeMoe(_id, _node) {
|
|
|
let moe = $(_id);
|
|
|
- moe.find('input[name], select[name]').each(function() {
|
|
|
+ moe.find('input[name], select[name], textarea[name]').each(function() {
|
|
|
let name = $(this).attr('name');
|
|
|
if(!!_node.data[name]) {
|
|
|
$(this).val(!!_node.data[name] ? _node.data[name] : '');
|
|
@@ -586,7 +586,8 @@
|
|
|
"dnd": {
|
|
|
"is_draggable": function(_node, _e) {
|
|
|
return _node[0].data && _node[0].data.type === 'stat_tree_line';
|
|
|
- }
|
|
|
+ },
|
|
|
+ "inside_pos": "last",
|
|
|
},
|
|
|
"contextmenu": {
|
|
|
show_at_node: false,
|
|
@@ -614,6 +615,7 @@
|
|
|
let selected = StatTree.selectedNode();
|
|
|
if(selected) {
|
|
|
StatTree.el.jstree(true).cut(selected.id);
|
|
|
+ StatTree.setDirty();
|
|
|
}
|
|
|
},
|
|
|
},
|
|
@@ -639,6 +641,7 @@
|
|
|
let selected = StatTree.selectedNode();
|
|
|
if(selected && StatTree.el.jstree(true).can_paste()) {
|
|
|
StatTree.el.jstree(true).paste(selected.id, 'last');
|
|
|
+ StatTree.setDirty();
|
|
|
}
|
|
|
},
|
|
|
},
|
|
@@ -652,6 +655,7 @@
|
|
|
let parsed = JSON.parse(localStorage.stPasteBuffer);
|
|
|
StatTree.el.jstree(true).create_node(selected.id, parsed);
|
|
|
StatTree.el.jstree(true).open_node(selected.id);
|
|
|
+ StatTree.setDirty();
|
|
|
}
|
|
|
catch (e) {
|
|
|
console.error(e);
|
|
@@ -667,31 +671,51 @@
|
|
|
"action": function (obj) {
|
|
|
let selected = StatTree.selectedNode();
|
|
|
if(selected) {
|
|
|
- localStorage.stPasteBuffer_Columns = JSON.stringify(selected.data.columns);
|
|
|
+ let json = JSON.stringify(selected.data.columns);
|
|
|
+ localStorage.stPasteBuffer_Columns = json;
|
|
|
+ copyTextToClipboard(json);
|
|
|
}
|
|
|
},
|
|
|
},
|
|
|
"paste_columns": {
|
|
|
"label": "<span class='text-sm'>Paste Columns</span>",
|
|
|
- "_disabled": !localStorage.stPasteBuffer_Columns,
|
|
|
+ // "_disabled": !localStorage.stPasteBuffer_Columns,
|
|
|
"action": function (obj) {
|
|
|
let selected = StatTree.selectedNode();
|
|
|
if(selected) {
|
|
|
- StatTree.setSelectedNodeColumns(JSON.parse(localStorage.stPasteBuffer_Columns));
|
|
|
- StatTree.onSelected();
|
|
|
- StatTree.setDirty();
|
|
|
+ navigator.clipboard.readText().then(clipText => {
|
|
|
+ // check if valid json
|
|
|
+ try {
|
|
|
+ let parsed = JSON.parse(clipText);
|
|
|
+ StatTree.setSelectedNodeColumns(parsed);
|
|
|
+ StatTree.onSelected();
|
|
|
+ StatTree.setDirty();
|
|
|
+ }
|
|
|
+ catch (e) {
|
|
|
+ toastr.error('Invalid paste buffer!');
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
},
|
|
|
"paste_columns_deep": {
|
|
|
"label": "<span class='text-sm'>Paste Columns Recursively</span>",
|
|
|
- "_disabled": !localStorage.stPasteBuffer_Columns,
|
|
|
+ // "_disabled": !localStorage.stPasteBuffer_Columns,
|
|
|
"action": function (obj) {
|
|
|
let selected = StatTree.selectedNode();
|
|
|
if(selected) {
|
|
|
- StatTree.pasteColumnsDeep(selected, localStorage.stPasteBuffer_Columns);
|
|
|
- StatTree.onSelected();
|
|
|
- StatTree.setDirty();
|
|
|
+ navigator.clipboard.readText().then(clipText => {
|
|
|
+ // check if valid json
|
|
|
+ try {
|
|
|
+ let parsed = JSON.parse(clipText);
|
|
|
+ StatTree.pasteColumnsDeep(selected, clipText);
|
|
|
+ StatTree.onSelected();
|
|
|
+ StatTree.setDirty();
|
|
|
+ }
|
|
|
+ catch (e) {
|
|
|
+ toastr.error('Invalid paste buffer!');
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
separator_after: true,
|
|
@@ -713,6 +737,7 @@
|
|
|
let selected = StatTree.selectedNode();
|
|
|
if(selected) {
|
|
|
StatTree.createChildTreePermutations(selected);
|
|
|
+ StatTree.setDirty();
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -723,6 +748,7 @@
|
|
|
let selected = StatTree.selectedNode();
|
|
|
if(selected) {
|
|
|
StatTree.replicateForAllUSStates(selected);
|
|
|
+ StatTree.setDirty();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -989,6 +1015,7 @@
|
|
|
save: function() {
|
|
|
setTimeout(() => {
|
|
|
$.post('{{ route("practice-management.api.statTree.replaceAllLinesJSON") }}', {
|
|
|
+ _token: '{{ csrf_token() }}',
|
|
|
uid: "{{ $statTree->uid }}",
|
|
|
data: StatTree.payload()
|
|
|
}, function (response) {
|
|
@@ -1378,6 +1405,8 @@
|
|
|
|
|
|
// paste it!
|
|
|
StatTree.el.jstree(true).create_node('#', parsed, 'first');
|
|
|
+
|
|
|
+ StatTree.setDirty();
|
|
|
}
|
|
|
catch (e) {
|
|
|
toastr.error('Invalid paste buffer!');
|