mstar-adsperformance
Version:
auto monitoring morningstar web pages ads performance
166 lines (140 loc) • 5.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _AdType = require('./AdType');
var _AdType2 = _interopRequireDefault(_AdType);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var DataCenter = function () {
function DataCenter() {
_classCallCheck(this, DataCenter);
this.pageUrls = {};
this.resultUrls = {};
}
_createClass(DataCenter, [{
key: 'addUrls',
value: function addUrls(url) {
if (typeof this.pageUrls[url] === 'undefined') {
this.pageUrls[url] = {};
var adTypes = _AdType2.default.getInstance().getAdTypes();
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = adTypes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var type = _step.value;
this.pageUrls[url][type] = [];
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}
}, {
key: 'pushData',
value: function pushData(url, type, dataObject) {
if (typeof this.pageUrls[url] === 'undefined') {
return;
}
if (Array.isArray(this.pageUrls[url][type]) === false) {
return;
}
this.pageUrls[url][type].push(dataObject);
}
}, {
key: 'calculateData',
value: function calculateData() {
var _this = this;
Object.keys(this.pageUrls).forEach(function (key) {
var obj = _this.pageUrls[key];
var adTypes = _AdType2.default.getInstance().getAdTypes();
_this.resultUrls[key] = {};
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = adTypes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var type = _step2.value;
var urlResultByAdType = _this.calculateDataForSpecificUrl(obj, type);
_this.resultUrls[key][type] = urlResultByAdType;
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
});
return this.resultUrls;
}
}, {
key: 'calculateDataForSpecificUrl',
value: function calculateDataForSpecificUrl(page, type) {
if (page[type] === null || typeof page[type] === 'undefined') {
return;
}
var adArray = page[type];
var resultArray = [];
var len = adArray.length;
if (len === 0) {
return;
}
resultArray = adArray[0];
var adInstanceLength = resultArray.length;
for (var i = 1; i < len; i++) {
if (adInstanceLength !== adArray[i].length) {
console.log('Data loading incorrect, need check result, item number is: ', i);
}
for (var j = 0; j < adInstanceLength; j++) {
resultArray[j] = this.assignObjectValue(resultArray[j], adArray[i][j]);
}
}
resultArray.map(function (itemAd) {
itemAd.generatetime = (Number(itemAd.generatetime) / len).toFixed(3);
itemAd.setuptime = (Number(itemAd.setuptime) / len).toFixed(3);
itemAd.rendertime = (Number(itemAd.rendertime) / len).toFixed(3);
itemAd.renderadcontentstart = (Number(itemAd.renderadcontentstart) / len).toFixed(3);
itemAd.renderadcontentend = (Number(itemAd.renderadcontentend) / len).toFixed(3);
});
return resultArray;
}
}, {
key: 'assignObjectValue',
value: function assignObjectValue(targetObj, newObj) {
// TODO make sure the instance will be order
if (targetObj.dest === newObj.dest) {
targetObj.generatetime = Number(targetObj.generatetime) + Number(newObj.generatetime);
targetObj.setuptime = Number(targetObj.setuptime) + Number(newObj.setuptime);
targetObj.rendertime = Number(targetObj.rendertime) + Number(newObj.rendertime);
targetObj.renderadcontentstart = Number(targetObj.renderadcontentstart) + Number(newObj.renderadcontentstart);
targetObj.renderadcontentend = Number(targetObj.renderadcontentend) + Number(newObj.renderadcontentend);
} else {
console.log("Ad object value is not match, check page source with Shone");
}
return targetObj;
}
}]);
return DataCenter;
}();
exports.default = DataCenter;