您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows calculation of sum or product on numeric data pasted in a textbox, uses cmd [ to summon text boxes
- // ==UserScript==
- // @name Numeric Data Operator
- // @namespace http://your.namespace.com
- // @version 0.4
- // @description Allows calculation of sum or product on numeric data pasted in a textbox, uses cmd [ to summon text boxes
- // @author Andrew Lakkis
- // @match *://*/*
- // @license MIT
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // Function to parse and process the numeric data
- function processData(data) {
- const rows = data.trim().split('\n');
- const columns = rows.map(row => row.split(/\s+/));
- const numericColumns = columns[0].map((_, i) => columns.map(row => parseFloat(row[i])).filter(num => !isNaN(num)));
- return numericColumns;
- }
- // Function to calculate the sum of a column
- function sum(column, useComma) {
- const sumValue = column.reduce((acc, curr) => acc + curr, 0);
- const expression = useComma ? column.join(', ') : column.join(' + ');
- return `${expression} = ${sumValue}`;
- }
- // Function to calculate the product of a column
- function product(column, useComma) {
- const productValue = column.reduce((acc, curr) => acc * curr, 1);
- const expression = useComma ? column.join(', ') : column.join(' * ');
- return `${expression} = ${productValue}`;
- }
- // Function to create and display the user interface
- function createUI(data) {
- if (!document.querySelector('[placeholder="Paste numeric data here..."]')) {
- const container = document.createElement('div');
- container.style.position = 'fixed';
- container.style.top = '50%';
- container.style.left = '50%';
- container.style.transform = 'translate(-50%, -50%)';
- container.style.backgroundColor = '#fff';
- container.style.padding = '20px';
- container.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0.2)';
- container.style.zIndex = '9999';
- const textArea = document.createElement('textarea');
- textArea.style.width = '300px';
- textArea.style.height = '200px';
- textArea.placeholder = 'Paste numeric data here...';
- container.appendChild(textArea);
- const select = document.createElement('select');
- const sumOption = document.createElement('option');
- sumOption.text = 'Sum';
- select.add(sumOption);
- const productOption = document.createElement('option');
- productOption.text = 'Product';
- select.add(productOption);
- container.appendChild(select);
- const commaCheckbox = document.createElement('input');
- commaCheckbox.type = 'checkbox';
- commaCheckbox.id = 'commaCheckbox';
- const commaLabel = document.createElement('label');
- commaLabel.htmlFor = 'commaCheckbox';
- commaLabel.textContent = 'Use comma separation';
- container.appendChild(commaCheckbox);
- container.appendChild(commaLabel);
- const calculateButton = document.createElement('button');
- calculateButton.textContent = 'Calculate';
- calculateButton.onclick = function() {
- const selectedOption = select.options[select.selectedIndex].text;
- const useComma = commaCheckbox.checked;
- const numericData = processData(textArea.value);
- const result = selectedOption === 'Sum' ? numericData.map(column => sum(column, useComma)) : numericData.map(column => product(column, useComma));
- resultTextBox.value = result.join('\n\n');
- };
- container.appendChild(calculateButton);
- const resultTextBox = document.createElement('textarea');
- resultTextBox.style.width = '300px';
- resultTextBox.style.height = '200px';
- resultTextBox.placeholder = 'Calculation results will appear here...';
- resultTextBox.disabled = true;
- container.appendChild(resultTextBox);
- const closeButton = document.createElement('button');
- closeButton.textContent = 'Close';
- closeButton.onclick = function() {
- document.body.removeChild(container);
- };
- container.appendChild(closeButton);
- document.body.appendChild(container);
- }
- }
- // Check if the user presses Cmd + [
- document.addEventListener('keydown', function(event) {
- if (event.metaKey && event.key === '[') {
- event.preventDefault();
- createUI();
- }
- });
- })();