mirror of
https://github.com/stashapp/CommunityScripts.git
synced 2026-02-15 18:20:21 -06:00
134 lines
5.8 KiB
JavaScript
134 lines
5.8 KiB
JavaScript
(function() {
|
|
function createStatElement(container, title, heading) {
|
|
const statEl = document.createElement('div');
|
|
statEl.classList.add('stats-element');
|
|
container.appendChild(statEl);
|
|
|
|
const statTitle = document.createElement('p');
|
|
statTitle.classList.add('title');
|
|
statTitle.innerText = title;
|
|
statEl.appendChild(statTitle);
|
|
|
|
const statHeading = document.createElement('p');
|
|
statHeading.classList.add('heading');
|
|
statHeading.innerText = heading;
|
|
statEl.appendChild(statHeading);
|
|
}
|
|
|
|
async function createSceneStashIDPct(row) {
|
|
const reqData = {
|
|
"variables": {
|
|
"scene_filter": {
|
|
"stash_id_endpoint": {
|
|
"modifier": "NOT_NULL"
|
|
}
|
|
}
|
|
},
|
|
"query": "query FindScenes($filter: FindFilterType, $scene_filter: SceneFilterType, $scene_ids: [Int!]) {\n findScenes(filter: $filter, scene_filter: $scene_filter, scene_ids: $scene_ids) {\n count\n }\n}"
|
|
};
|
|
const stashIdCount = (await stash.callGQL(reqData)).data.findScenes.count;
|
|
|
|
const reqData2 = {
|
|
"variables": {
|
|
"scene_filter": {}
|
|
},
|
|
"query": "query FindScenes($filter: FindFilterType, $scene_filter: SceneFilterType, $scene_ids: [Int!]) {\n findScenes(filter: $filter, scene_filter: $scene_filter, scene_ids: $scene_ids) {\n count\n }\n}"
|
|
};
|
|
const totalCount = (await stash.callGQL(reqData2)).data.findScenes.count;
|
|
|
|
createStatElement(row, (stashIdCount / totalCount * 100).toFixed(2) + '%', 'Scene StashIDs');
|
|
}
|
|
|
|
async function createPerformerStashIDPct(row) {
|
|
const reqData = {
|
|
"variables": {
|
|
"performer_filter": {
|
|
"stash_id_endpoint": {
|
|
"modifier": "NOT_NULL"
|
|
}
|
|
}
|
|
},
|
|
"query": "query FindPerformers($filter: FindFilterType, $performer_filter: PerformerFilterType) {\n findPerformers(filter: $filter, performer_filter: $performer_filter) {\n count\n }\n}"
|
|
};
|
|
const stashIdCount = (await stash.callGQL(reqData)).data.findPerformers.count;
|
|
|
|
const reqData2 = {
|
|
"variables": {
|
|
"performer_filter": {}
|
|
},
|
|
"query": "query FindPerformers($filter: FindFilterType, $performer_filter: PerformerFilterType) {\n findPerformers(filter: $filter, performer_filter: $performer_filter) {\n count\n }\n}"
|
|
};
|
|
const totalCount = (await stash.callGQL(reqData2)).data.findPerformers.count;
|
|
|
|
createStatElement(row, (stashIdCount / totalCount * 100).toFixed(2) + '%', 'Performer StashIDs');
|
|
}
|
|
|
|
async function createStudioStashIDPct(row) {
|
|
const reqData = {
|
|
"variables": {
|
|
"studio_filter": {
|
|
"stash_id_endpoint": {
|
|
"modifier": "NOT_NULL"
|
|
}
|
|
}
|
|
},
|
|
"query": "query FindStudios($filter: FindFilterType, $studio_filter: StudioFilterType) {\n findStudios(filter: $filter, studio_filter: $studio_filter) {\n count\n }\n}"
|
|
};
|
|
const stashIdCount = (await stash.callGQL(reqData)).data.findStudios.count;
|
|
|
|
const reqData2 = {
|
|
"variables": {
|
|
"scene_filter": {}
|
|
},
|
|
"query": "query FindStudios($filter: FindFilterType, $studio_filter: StudioFilterType) {\n findStudios(filter: $filter, studio_filter: $studio_filter) {\n count\n }\n}"
|
|
};
|
|
const totalCount = (await stash.callGQL(reqData2)).data.findStudios.count;
|
|
|
|
createStatElement(row, (stashIdCount / totalCount * 100).toFixed(2) + '%', 'Studio StashIDs');
|
|
}
|
|
|
|
async function createPerformerFavorites(row) {
|
|
const reqData = {
|
|
"variables": {
|
|
"performer_filter": {
|
|
"filter_favorites": true
|
|
}
|
|
},
|
|
"query": "query FindPerformers($filter: FindFilterType, $performer_filter: PerformerFilterType) {\n findPerformers(filter: $filter, performer_filter: $performer_filter) {\n count\n }\n}"
|
|
};
|
|
const perfCount = (await stash.callGQL(reqData)).data.findPerformers.count;
|
|
|
|
createStatElement(row, perfCount, 'Favorite Performers');
|
|
}
|
|
|
|
async function createMarkersStat(row) {
|
|
const reqData = {
|
|
"variables": {
|
|
"scene_marker_filter": {}
|
|
},
|
|
"query": "query FindSceneMarkers($filter: FindFilterType, $scene_marker_filter: SceneMarkerFilterType) {\n findSceneMarkers(filter: $filter, scene_marker_filter: $scene_marker_filter) {\n count\n }\n}"
|
|
};
|
|
const totalCount = (await stash.callGQL(reqData)).data.findSceneMarkers.count;
|
|
|
|
createStatElement(row, totalCount, 'Markers');
|
|
}
|
|
|
|
stash.addEventListener('stash:page:stats', function() {
|
|
waitForElementByXpath("//div[contains(@class, 'container-fluid')]/div[@class='mt-5']", function(xpath, el) {
|
|
if (!document.getElementById('custom-stats-row')) {
|
|
const changelog = el.querySelector('div.changelog');
|
|
const row = document.createElement('div');
|
|
row.setAttribute('id', 'custom-stats-row');
|
|
row.classList.add('col', 'col-sm-8', 'm-sm-auto', 'row', 'stats');
|
|
el.insertBefore(row, changelog);
|
|
|
|
createSceneStashIDPct(row);
|
|
createStudioStashIDPct(row);
|
|
createPerformerStashIDPct(row);
|
|
createPerformerFavorites(row);
|
|
createMarkersStat(row);
|
|
}
|
|
});
|
|
});
|
|
})();
|