MCPcopy Index your code
hub / github.com/zxlie/FeHelper / _showJsonPath

Function _showJsonPath

apps/json-format/format-lib.js:653–709  ·  view source on GitHub ↗
(curEl)

Source from the content-addressed store, hash-verified

651
652 // 添加json路径
653 let _showJsonPath = function (curEl) {
654 let validKeys = _getJsonPathKeys(curEl);
655
656 // 创建或获取语言选择器和路径显示区域
657 let jfPathContainer = $('#jsonPathContainer');
658 if (!jfPathContainer.length) {
659 jfPathContainer = $('<div id="jsonPathContainer"/>').prependTo(jfStatusBar);
660
661 // 创建语言选择下拉框
662 let langSelector = $('<select id="jsonPathLangSelector" title="选择编程语言格式">' +
663 '<option value="javascript">JavaScript</option>' +
664 '<option value="php">PHP</option>' +
665 '<option value="python">Python</option>' +
666 '<option value="java">Java</option>' +
667 '<option value="csharp">C#</option>' +
668 '<option value="golang">Go</option>' +
669 '<option value="ruby">Ruby</option>' +
670 '<option value="swift">Swift</option>' +
671 '</select>').appendTo(jfPathContainer);
672
673 // 创建路径显示区域
674 let jfPath = $('<span id="jsonPath"/>').appendTo(jfPathContainer);
675 $('<span id="jsonSelectionMeta"/>').appendTo(jfPathContainer);
676
677 // 绑定语言切换事件
678 langSelector.on('change', function() {
679 // 保存选择的语言到本地存储(如果可用)
680 try {
681 localStorage.setItem('fehelper_json_path_lang', $(this).val());
682 } catch (e) {
683 // 在沙盒环境中忽略localStorage错误
684 console.warn('localStorage不可用,跳过保存语言选择');
685 }
686 // 从容器中获取当前保存的keys,而不是使用闭包中的validKeys
687 let currentKeys = jfPathContainer.data('currentKeys') || [];
688 _updateJsonPath(currentKeys, $(this).val());
689 });
690
691 // 从本地存储恢复语言选择(如果可用)
692 let savedLang = 'javascript';
693 try {
694 savedLang = localStorage.getItem('fehelper_json_path_lang') || 'javascript';
695 } catch (e) {
696 // 在沙盒环境中使用默认值
697 console.warn('localStorage不可用,使用默认语言选择');
698 }
699 langSelector.val(savedLang);
700 }
701
702 // 保存当前的keys到容器的data属性中,供语言切换时使用
703 jfPathContainer.data('currentKeys', validKeys);
704
705 // 获取当前选择的语言
706 let selectedLang = $('#jsonPathLangSelector').val() || 'javascript';
707 _updateJsonPath(validKeys, selectedLang);
708 _updateStatusBarSelectionInfo(curEl);
709 };
710

Callers 1

_toogleStatusBarFunction · 0.85

Calls 5

_getJsonPathKeysFunction · 0.85
_updateJsonPathFunction · 0.85
$Function · 0.50
dataMethod · 0.45

Tested by

no test coverage detected