vue-service-model
Version:
Vue.js library for handling REST service requests with caching, aggregation and model definitions
85 lines (84 loc) • 2.84 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var common_1 = require("../utils/common");
var ConfigHandler_1 = require("../utils/ConfigHandler");
var DisplayComponentPropsMixin_1 = tslib_1.__importDefault(require("../mixins/DisplayComponentPropsMixin"));
exports.default = DisplayComponentPropsMixin_1.default.extend({
name: 'BaseDisplayFieldRender',
inheritAttrs: false,
data: function () { return ({
renderData: common_1.NO_VALUE
}); },
computed: {
hasResolvedRenderData: function () {
return this.renderData !== common_1.NO_VALUE;
}
},
asyncComputed: {
renderData: {
default: common_1.NO_VALUE,
get: function () {
var _self = this;
return _self.resolveRenderData();
}
}
},
watch: {
field: function () {
this.setResolveRenderData();
},
'field.data': {
deep: true,
handler: function () {
this.setResolveRenderData();
}
},
renderProps: {
deep: true,
handler: function () {
this.setResolveRenderData();
}
}
},
created: function () {
this.setResolveRenderData();
},
methods: {
setResolveRenderData: function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!!ConfigHandler_1.configHandler.useAsyncComputed()) return [3 /*break*/, 2];
_a = this;
return [4 /*yield*/, this.resolveRenderData()];
case 1:
_a.renderData = _b.sent();
_b.label = 2;
case 2: return [2 /*return*/];
}
});
});
},
resolveRenderData: function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, this.field.prepareDisplayRender(this.renderProps)];
});
});
},
renderField: function (h) {
return this.field.displayRender(h, this.renderData);
}
},
render: function (h) {
if (this.hasResolvedRenderData) {
return this.renderField(h);
}
else {
return undefined;
}
}
});
;