|
@@ -14,11 +14,12 @@ class Editable extends AbstractDisplayer
|
|
|
$this->addStyle();
|
|
|
|
|
|
return <<<HTML
|
|
|
-<div class="{$this->selector}">
|
|
|
- <span data-value="{$this->value}" data-name="{$this->column->getName()}" data-id="{$this->getKey()}" data-url="{$this->getUrl()}" >
|
|
|
- {$this->value}
|
|
|
- </span>
|
|
|
-</div>
|
|
|
+ <div>
|
|
|
+ <span class="{$this->selector}" >
|
|
|
+ {$this->value}
|
|
|
+ </span>
|
|
|
+ <i class="feather icon-check btn-outline-primary hidden" data-value="{$this->value}" data-name="{$this->column->getName()}" data-id="{$this->getKey()}" data-url="{$this->getUrl()}"></i>
|
|
|
+ </div>
|
|
|
HTML;
|
|
|
}
|
|
|
|
|
@@ -34,6 +35,7 @@ HTML;
|
|
|
Admin::style(
|
|
|
<<<CSS
|
|
|
.grid-editable{border-bottom:dashed 1px $color;color: $color;display: inline-block}
|
|
|
+.grid-editable,.icon-check{margin-left: 0.4rem}
|
|
|
CSS
|
|
|
);
|
|
|
}
|
|
@@ -41,15 +43,20 @@ CSS
|
|
|
protected function addScript()
|
|
|
{
|
|
|
$script = <<<JS
|
|
|
- $(".{$this->selector} span").on("click",function() {
|
|
|
+ $(".{$this->selector}").on("click",function() {
|
|
|
$(this).attr('contenteditable', true);
|
|
|
- }).on("blur",function() {
|
|
|
+ $(this).next().removeClass("hidden");
|
|
|
+ })
|
|
|
+ $(".icon-check").on("click",function() {
|
|
|
var obj = $(this);
|
|
|
- var url = obj.attr('data-url').trim();
|
|
|
- var name = obj.attr('data-name').trim();
|
|
|
+ var url = obj.attr('data-url');
|
|
|
+ var name = obj.attr('data-name');
|
|
|
var old_value = obj.attr('data-value').trim();
|
|
|
- var value = obj.html().trim();
|
|
|
+ var rebr = new RegExp("<br>","g");
|
|
|
+ var renbsp = new RegExp(" ","g");
|
|
|
+ var value = obj.prev().html().replace(rebr,'').replace(renbsp,'').trim();
|
|
|
if (value == old_value) {
|
|
|
+ obj.addClass("hidden").prev().attr('contenteditable', false);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -64,19 +71,20 @@ CSS
|
|
|
type: "POST",
|
|
|
data: data,
|
|
|
success: function (data) {
|
|
|
- Dcat.NP.done();
|
|
|
if (data.status) {
|
|
|
- obj.attr('data-value',value);
|
|
|
+ obj.attr('data-value',value).addClass("hidden").prev().html(value).attr('contenteditable', false);
|
|
|
Dcat.success(data.message);
|
|
|
} else {
|
|
|
- obj.html(old_value);
|
|
|
+ obj.prev().html(old_value);
|
|
|
Dcat.error(data.message);
|
|
|
}
|
|
|
},
|
|
|
error:function(a,b,c) {
|
|
|
- Dcat.NP.done();
|
|
|
- obj.html(old_value);
|
|
|
- Dcat.handleAjaxError(a, b, c);
|
|
|
+ obj.prev().html(old_value);
|
|
|
+ Dcat.handleAjaxError(a, b, c);
|
|
|
+ },
|
|
|
+ complete:function(a,b) {
|
|
|
+ Dcat.NP.done();
|
|
|
}
|
|
|
});
|
|
|
})
|
|
@@ -84,4 +92,6 @@ JS;
|
|
|
|
|
|
Admin::script($script);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|