|
@@ -14,6 +14,7 @@
|
|
|
<div class="d-flex align-items-baseline mb-2">
|
|
|
<h6 class="font-weight-bold m-0">Report Columns</h6>
|
|
|
</div>
|
|
|
+ <div id="report-column"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
@@ -31,7 +32,7 @@
|
|
|
form.find('input[name="label"]').val(label);
|
|
|
});
|
|
|
|
|
|
- let treePayload = '';
|
|
|
+ let treePayload = '', dirty = false;
|
|
|
|
|
|
function getNodes(_ul, _indent, _lines) {
|
|
|
_ul.find('>li').each(function() {
|
|
@@ -80,6 +81,7 @@
|
|
|
}
|
|
|
|
|
|
function setDirty() {
|
|
|
+ dirty = true;
|
|
|
$('.if-changed').removeClass('d-none');
|
|
|
}
|
|
|
|
|
@@ -91,14 +93,53 @@
|
|
|
}, function (response) {
|
|
|
if(!hasResponseError(response)) {
|
|
|
toastr.success('Stat tree saved!');
|
|
|
+ fastReload();
|
|
|
}
|
|
|
}, 'json');
|
|
|
}
|
|
|
|
|
|
+ function onSelected(_e, _data) {
|
|
|
+ let selected = $('#stat-tree-view-{{$statTree->id}}>ul').jstree('get_selected', false);
|
|
|
+ if(selected && selected.length) {
|
|
|
+ selected = $('#' + selected[0]);
|
|
|
+ }
|
|
|
+ if(!selected || !selected.length) return;
|
|
|
+ selected = selected.find('>a.jstree-anchor>.stat-tree-line').first();
|
|
|
+ if(!selected.is('[data-line-uid]')) {
|
|
|
+ $('#report-column').text('Node not saved yet!');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ let rptColumn = $('#report-column');
|
|
|
+ rptColumn.text('Loading...');
|
|
|
+
|
|
|
+ $.get('/practice-management/stat-tree-lines/report-columns/' + selected.attr('data-line-uid'), _data => {
|
|
|
+ rptColumn.html(_data);
|
|
|
+
|
|
|
+ initStagSuggest();
|
|
|
+ rptColumn.find('input[stag-suggest][name="column"]')
|
|
|
+ .off('stag-suggest-selected')
|
|
|
+ .on('stag-suggest-selected', (_e, _input, _data) => {
|
|
|
+ $.post("{{ route('practice-management.api.statTreeLineReportColumn.create') }}", {
|
|
|
+ _token: '{{csrf_token()}}',
|
|
|
+ statTreeLineId: $(_input).attr('data-line-id'),
|
|
|
+ label: _data.label,
|
|
|
+ displayKey: _data.text,
|
|
|
+ }, function (response) {
|
|
|
+ if(!hasResponseError(response)) {
|
|
|
+ onSelected()
|
|
|
+ }
|
|
|
+ }, 'json');
|
|
|
+ return false;
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
$('#stat-tree-view-{{$statTree->id}}')
|
|
|
//.on('changed.jstree', setDirty)
|
|
|
.on('move_node.jstree', setDirty)
|
|
|
.on('copy_node.jstree', setDirty)
|
|
|
+ .on('select_node.jstree', onSelected)
|
|
|
.jstree({
|
|
|
"core": {
|
|
|
"check_callback": true,
|
|
@@ -112,12 +153,12 @@
|
|
|
show_at_node: false,
|
|
|
items: function ($node) {
|
|
|
return {
|
|
|
- "cols": {
|
|
|
+ /*"cols": {
|
|
|
"label": "<span class='text-sm'>Report Columns</span>",
|
|
|
"action": function (obj) {
|
|
|
|
|
|
},
|
|
|
- },
|
|
|
+ },*/
|
|
|
"remove": {
|
|
|
"label": "<span class='text-sm'>Remove</span>",
|
|
|
"action": function (obj) {
|
|
@@ -185,6 +226,11 @@
|
|
|
$('#refresh-counts')
|
|
|
.off('click')
|
|
|
.on('click', function() {
|
|
|
+ if(dirty) {
|
|
|
+ if(!window.confirm('Changes to the tree will be lost! Continue?')) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
showMask();
|
|
|
$.post("{{ route('practice-management.api.statTree.refreshTreeCountQueries') }}", {
|
|
|
statTreeID: "{{ $statTree->id }}"
|
|
@@ -196,6 +242,20 @@
|
|
|
return false;
|
|
|
});
|
|
|
|
|
|
+ $(document)
|
|
|
+ .off('click', '.remove-column')
|
|
|
+ .on('click', '.remove-column', function() {
|
|
|
+ $.post("{{ route('practice-management.api.statTreeLineReportColumn.remove') }}", {
|
|
|
+ _token: '{{csrf_token()}}',
|
|
|
+ uid: $(this).attr('data-uid')
|
|
|
+ }, function (response) {
|
|
|
+ if(!hasResponseError(response)) {
|
|
|
+ onSelected()
|
|
|
+ }
|
|
|
+ }, 'json');
|
|
|
+ return false;
|
|
|
+ });
|
|
|
+
|
|
|
initMoes();
|
|
|
}
|
|
|
addMCInitializer('stat-tree-edit-page', init, '#statTreeEdit')
|