Settings

by whittet

HTML

<script src="https://gist.githubusercontent.com/whittet/316100226bc4b90121d9230083e49d6d/raw/0d9b8a44437e89822ae2998b8b1b1a9c450ccaf4/tasker.js"></script>
<body>
Welcome
</body>

JavaScript

function setupField(fieldName, defaultValue, promptMessage, validation) {
  function promptRepeat(questionText, defaultValue, validatorFn) {
    var value = prompt(questionText, defaultValue);
    if (validatorFn.test(value)) {
      return value;
    }
    return promptRepeat(questionText, defaultValue, validation);
  }

  var value = global(fieldName);
  var suggestedValue = defaultValue;
  if (value && value.length > 0) suggestedValue = value.replace(".", ":");
  setGlobal(fieldName, promptRepeat(promptMessage, suggestedValue, validation));
}
var hourString = {
  test: function(n) {
    var f = parseFloat(n.replace(":", "."));
    var result = !isNaN(f) && 0 <= f && f <= 23;
    if (result) {
      n = n.replace(":", ".");
    }
    return result;
  }
};
var inspirationMessage = {
  test: function(message) {
    message = message.replace(/![\d\w\s\.\!\,]/g, "");
    return confirm("Please confirm your message as, '" + message + "'");
  }
};
var pin = global("Pin") || "";
var hasPin = pin && pin.length > 0;
if (hasPin && !lock("Screen Time Limit", pin, true, false, true)) {
  exit();
}

if (!hasPin || confirm("Change your pin?")) {
  setupField("Pin", 5555, "Lock screen' 4 digit pin number:", /^[0-9]{4}$/);
}
setupField("weekdayMinutes", 60, "Number of minutes per weekday?", /^[0-9]{1,4}$/);
setupField("weekendMinutes", 120, "Number of minutes per weekend day?", /^[0-9]{1,4}$/);
alert("Time of day rules are used when Daytime < Night time and/or School lock time < After school time.");
setupField("dayTime", "6:00", "Daytime (military hours):", hourString);
setupField("nightTime", "20:00", "Night time (military hours):", hourString);
setupField("schoolTime", "8:40", "5 minutes warning for School lock (military time):", hourString);
setupField("afterSchoolTime", "9:10", "After school it unlocks (military time):", hourString);
setupField("schoolTimeMessage", "Learn a lot at school!", "School inspiration message:", inspirationMessage);

exit();