+++ /dev/null
-const app = new Vue({
- el: '#app',
- data: {
- info: null,
- summaries: null,
- selectedSummary: null,
- filterGreen: true,
- filterDomain: null,
- filterOrg: null,
- //filterDate: (new Date()).toISOString().substring(0, 7),
- filterDate: null,
- reverse: true,
- anonymous: true,
- },
- created: async function () {
- let that = this;
-
- if ('anonymous' in localStorage) {
- this.anonymous = JSON.parse(localStorage.anonymous);
- }
- this.fetchAll();
- },
- methods: {
- fetchAll: async function() {
- try {
- this.info = await this.getInfo();
- this.summaries = this.info.summaries;
- } catch (error) {
- this.info = null;
- this.summaries = null;
- }
- },
- toggleAnonymous: function() {
- this.anonymous = !this.anonymous;
- localStorage.anonymous = this.anonymous;
- this.fetchAll();
- },
- filtered: function () {
- let that = this;
- let filtered = this.summaries.filter(function (summary) {
- return (!that.filterGreen || that.getColor(summary) !== "lime")
- && (!that.filterDomain || summary.domain === that.filterDomain)
- && (!that.filterOrg || summary.org === that.filterOrg)
- && (!that.filterDate || that.inDates(summary));
- });
- if (this.reverse) {
- return filtered.reverse();
- } else {
- return filtered;
- }
- },
- toggle: async function(summary) {
- if (this.selectedSummary && this.selectedSummary.serial === summary.serial) {
- this.selectedSummary = null;
- } else {
- if (!summary.details) {
- summary.details = await this.getDetails(summary.serial);
- }
- this.selectedSummary = summary;
- }
- },
- inDates: function(summary) {
- if (!this.filterDate) { return true; }
-
- let mindate = (new Date(summary.mindate)).toISOString().substring(0, 7);
- let maxdate = (new Date(summary.maxdate)).toISOString().substring(0, 7);
-
- return mindate === this.filterDate || maxdate === this.filterDate;
- },
- printDate: function (date) {
- return (new Date(date)).toISOString().replace("T", " ").replace(/\..*Z$/, " UTC");
- },
- getColor: function (element) {
- if (element.dkimresult === "fail" && element.spfresult === "fail") {
- return "red";
- } else if (element.dkimresult === "fail" || element.spfresult === "fail") {
- return "orange";
- } else if (element.dkimresult === "pass" && element.spfresult === "pass") {
- return "lime";
- } else {
- return "yellow";
- }
- },
- getInfo: function (event) {
- let anonymous = this.anonymous ? "anonymous=1" : "";
- return fetch(`api.php?${anonymous}`).then(function (response) {
- if (response.status != 200) { return; }
- return response.text().then(function (body) {
- return JSON.parse(body);
- });
- });
- },
- getDetails: function (serial) {
- let anonymous = this.anonymous ? "&anonymous=1" : "";
- return fetch(`api.php?serial=${serial}${anonymous}`).then(function (response) {
- if (response.status != 200) { return; }
- return response.text().then(function (body) {
- return JSON.parse(body);
- });
- });
- }
- }
-});