12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace App\Admin\Extensions\Displayers;
- use Encore\Admin\Admin;
- use Encore\Admin\Grid\Displayers\AbstractDisplayer;
- class AjaxExpand extends AbstractDisplayer
- {
- public function display()
- {
- $this->setupScript();
- $key = $this->getKey();
- if ($this->row->children->isEmpty()) {
- return <<<EOT
- <i class="fa fa-file-o fa-fw"></i><span style="margin-left: 4px">{$this->value}</span>
- EOT;
- }
- return <<<EOT
- <span class="grid-expand" data-inserted="0" data-level="1" data-key="{$key}" data-parent_group="collapse-g-{$key}">
- <a href="javascript:void(0)" style="color: #666666;"><i class="fa fa-folder fa-fw"></i><span style="margin-left: 4px">{$this->value}</span></a>
- </span>
- EOT;
- }
- protected function setupScript()
- {
- $script = <<<EOT
- $("tbody").off().delegate('.grid-expand',"click",function(){
- var expand=this;
- if ($(this).data('inserted') == '0') {
- $.ajax({
- method: 'get',
- url: "{$this->getResource()}?_expand_="+$(expand).data('key')+"&level="+$(expand).data('level')+"&parent_group="+$(expand).data('parent_group'),
- beforeSend: function () {
- $("i", expand).removeClass("fa-folder");
- $("i", expand).addClass("fa-refresh fa-spin");
- },
- success: function (data) {
- if (data.has_children == 0) {
- $("i", expand).removeClass("fa-refresh fa-spin");
- $("i", expand).addClass("fa-file-o");
- return false;
- }
- $("i", expand).removeClass("fa-refresh fa-spin");
- $("i", expand).addClass("fa-folder-open");
- var html = data.html;
- var row = $(expand).closest('tr');
- row.after(html);
- $(expand).data('inserted', 1);
- $('.{$this->grid->getGridRowName()}-checkbox').iCheck({checkboxClass:'icheckbox_minimal-blue'}).on('ifChanged', function () {
- if (this.checked) {
- $(this).closest('tr').css('background-color', '#ffffd5');
- } else {
- $(this).closest('tr').css('background-color', '');
- }
- });
- render_action_delete();
- }
- });
- } else {
- if ($("i", this).hasClass("fa-folder")) {
- //关闭状态,展开,展开只展开子类
- $('.collapse-c-'+$(this).data('key')).collapse('show');
- } else {
- //开启状态,关闭,关闭要关闭所有的子类
- $('.collapse-g-'+$(this).data('key')).collapse('hide');
- $('.collapse-g-'+$(this).data('key')).find("i.fa-folder-open").toggleClass("fa-folder fa-folder-open");
- }
- $("i", this).toggleClass("fa-folder fa-folder-open");
- }
- });
- EOT;
- Admin::script($script);
- }
- }
|