123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- var DAYS = [
- ["Monday", "MON"],
- ["Tuesday", "TUE"],
- ["Wednesday", "WED"],
- ["Thursday", "THU"],
- ["Friday", "FRI"],
- ["Saturday", "SAT"],
- ["Sunday", "SUN"]
- ]
- var DAYS_MAP = {
- 'mon': 'parking.Day("MON")',
- 'tue': 'parking.Day("TUE")',
- 'wed': 'parking.Day("WED")',
- 'thu': 'parking.Day("THU")',
- 'fri': 'parking.Day("FRI")',
- 'sat': 'parking.Day("SAT")',
- 'sun': 'parking.Day("SUN")',
- 'tod': 'parking.today()'
- };
- Blockly.Blocks['datetime_day'] = {
- /**
- * Block for datetime day.
- * @this Blockly.Block
- */
- init: function() {
- this.jsonInit({
- "message0": "%1",
- "args0": [
- {
- "type": "field_dropdown",
- "name": "DAY",
- "options": [["Today", "TODAY"]].concat(DAYS)
- }
- ],
- "output": "DatetimeDay",
- "colour": DATA_HUE,
- "tooltip": "Returns a day of the week",
- "helpUrl": ""
- });
- }
- };
- var HOURS = [["1", "1"], ["2", "2"], ["3", "3"],
- ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"],
- ["8", "8"], ["9", "9"], ["10", "10"], ["11", "11"],
- ["12", "12"]];
- var MINUTES = [["00", "00"], ["30", "30"]];
- var MERIDIANS = [["am", "AM"], ["pm", "PM"]];
- Blockly.Blocks['datetime_time'] = {
- /**
- * Block for datetime day.
- * @this Blockly.Block
- */
- init: function() {
- this.setColour(DATA_HUE);
- var dropdown = new Blockly.FieldDropdown([["Now", "NOW"]].concat(HOURS), function(opt) {
- var isNow = (opt == 'NOW');
- this.sourceBlock_.updateShape_(isNow);
- });
- this.appendDummyInput()
- .appendField(dropdown, 'HOUR');
- this.setInputsInline(true);
- this.setOutput(true, 'DatetimeTime');
- this.setTooltip("Returns a time of day");
- },
- mutationToDom: function() {
- var container = document.createElement('mutation');
- var isNow = (this.getFieldValue('HOUR').toUpperCase() == 'NOW');
- container.setAttribute('isnow', isNow);
- return container;
- },
- domToMutation: function(xmlElement) {
- var isNow = (xmlElement.getAttribute('isnow') == 'true');
- this.updateShape_(isNow);
- },
- updateShape_: function(isNow) {
- // Add or remove a Value Input.
- var inputExists = this.getInput('EXTENDED');
- if (!isNow) {
- if (!inputExists) {
- var minuteMenu = new Blockly.FieldDropdown(MINUTES);
- var meridianMenu = new Blockly.FieldDropdown(MERIDIANS);
- this.appendDummyInput('EXTENDED')
- .appendField(':')
- .appendField(minuteMenu, 'MINUTE')
- .appendField(meridianMenu, 'MERIDIAN');
- }
- } else if (inputExists) {
- this.removeInput('EXTENDED');
- }
- }
- };
- var HOURS_MAP = {
- '1': 'parking.one()',
- '2': 'parking.two()',
- '3': 'parking.three()',
- '4': 'parking.four()',
- '5': 'parking.five()',
- '6': 'parking.six()',
- '7': 'parking.seven()',
- '8': 'parking.eight()',
- '9': 'parking.nine()',
- '10': 'parking.ten()',
- '11': 'parking.eleven()',
- '12': 'parking.twelve()',
- 'NOW': 'parking.now()'
- };
- var MINUTES_MAP = {
- '00': 'parking.exactly()',
- '30': 'parking.half()'
- }
- var MERIDIANS_MAP = {
- 'AM': 'parking.am()',
- 'PM': 'parking.pm()'
- }
- var convertDate = function(date) {
- date = date.slice(0, 3).toLowerCase();
- switch (date) {
- case "mon": return "Monday";
- case "tue": return "Tuesday";
- case "wed": return "Wednesday";
- case "thu": return "Thursday";
- case "fri": return "Friday";
- case "sat": return "Saturday";
- case "sun": return "Sunday";
- default: return date;
- }
- }
- var convertMinute = function(minute) {
- if (minute < 10) {
- return "0"+minute;
- } else {
- return ""+minute;
- }
- }
- var equalityOperators = [
- ["==", "IS"],
- ["<", "BEFORE"],
- [">", "AFTER"],
- ["<=", "BEFORE_EQUAL"],
- ["=>", "AFTER_EQUAL"],
- ["!=", "IS_NOT"]
- ];
- var equalityOperatorsConversions = {
- "IS": "parking.equal",
- "BEFORE": "parking.before",
- "AFTER": "parking.after",
- "BEFORE_EQUAL": "parking.before_equal",
- "AFTER_EQUAL": "parking.after_equal",
- "IS_NOT": "parking.not_equal",
- }
- // FINISH _time and _day
- // Add in numbers and days to KNOWN_MODULES
- Blockly.Blocks['datetime_check_day'] = {
- /**
- * Block for testing if something contains something.
- * @this Blockly.Block
- */
- init: function() {
- this.setColour(Blockly.Blocks.logic.HUE);
- this.setOutput(true, 'Boolean');
- this.appendValueInput('LEFT')
- .setCheck('DatetimeDay')
- .appendField(new Blockly.FieldDropdown(DAYS), 'VALUE')
- .appendField(new Blockly.FieldDropdown(equalityOperators), 'OP');
-
- this.setInputsInline(false);
- }
- };
- Blockly.Blocks['datetime_check_time'] = {
- /**
- * Block for testing if something contains something.
- * @this Blockly.Block
- */
- init: function() {
- this.setColour(Blockly.Blocks.logic.HUE);
- this.setOutput(true, 'Boolean');
- this.appendValueInput('LEFT')
- .setCheck('DatetimeTime')
- .appendField(new Blockly.FieldDropdown(HOURS), 'HOURS')
- .appendField(':')
- .appendField(new Blockly.FieldDropdown(MINUTES), 'MINUTES')
- .appendField(new Blockly.FieldDropdown(MERIDIANS), 'MERIDIANS')
- .appendField(new Blockly.FieldDropdown(equalityOperators), 'OP');
- //this.setInputsInline(true);
- }
- };
|