Skip to content

Commit

Permalink
Merge pull request #12 from jp0550/hubitat-patches
Browse files Browse the repository at this point in the history
Hubitat patches
  • Loading branch information
ajayjohn committed Jul 19, 2018
2 parents eed1355 + 663b81f commit da850cc
Show file tree
Hide file tree
Showing 15 changed files with 263 additions and 66 deletions.
2 changes: 1 addition & 1 deletion dashboard/css/modules/piston.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ piston[anonymized] span[eml]::before {

piston[anonymized] span[uri]::before {
line-height: 17px !important;
content: '[https://webcore.co]';
content: '[https://anonymized.webcore.co]';
font-size: initial;
}

Expand Down
19 changes: 12 additions & 7 deletions dashboard/html/modules/fuel.module.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,18 @@
<div class="form-group">
<button class="btn btn-default" ng-click="home()">Exit</button>
</div>
<li canister ng-repeat="canister in canisters">
<label ng-click="selectCanister(canister);">{{canister ? canister : 'Uncategorized'}}</label>
<ul fuelStreams>
<li ng-repeat="fuelStream in fuelStreams" ng-if="fuelStream.c == canister" ng-selected="!!fuelStream.selected">
<label ng-click="selectFuelStream(fuelStream);"><i class="fa fa-{{fuelStream.selected ? 'check-' : ''}}square-o" ng-click="toggleFuelStream(fuelStream); $event.stopPropagation();"></i> {{fuelStream.n}}<created>{{utcToString(fuelStream.t)}}</created></label>
</li>
</ul>
<li canister ng-repeat="canister in canisters" ng-class="'canister-' + canister | uniqueDashify:$index">
<label ng-click="selectCanister(canister);">
<span class="fa fa-caret-down collapse-control rotate-on-collapse pull-right" data-toggle="collapse" collapse-control data-target="#{{'collapse-' + canister | uniqueDashify:$index}}" aria-expanded="true" title="Hide/Show"></span>
{{canister ? canister : 'Uncategorized'}}
</label>
<div collapse-target ng-attr-id="{{'collapse' + canister | uniqueDashify:$index}}" class="collapse in">
<ul fuelStreams>
<li ng-repeat="fuelStream in fuelStreams" ng-if="fuelStream.c == canister" ng-selected="!!fuelStream.selected" ng-class="'fuel-stream-' + (fuelStream.n | dashify)">
<label ng-click="selectFuelStream(fuelStream);"><i class="fa fa-{{fuelStream.selected ? 'check-' : ''}}square-o" ng-click="toggleFuelStream(fuelStream); $event.stopPropagation();"></i> {{fuelStream.n}}<created>{{utcToString(fuelStream.t)}}</created></label>
</li>
</ul>
</div>
</li>
</ul>
<graph>
Expand Down
13 changes: 9 additions & 4 deletions dashboard/html/modules/piston.module.html
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,10 @@ <h3>
<script type="text/ng-template" id="variables">
<div ng-repeat="variable in variables">
<line com ng-if="variable.z">/* {{variable.z}} */</line>
<line pun><span ng-click="editVariable(variable);"><span pun ng-if="(variable.a == 's') && (variable.v)">const&nbsp;</span><span typ>{{variable.t}}&nbsp;</span><span var>{{variable.n}}</span><span ng-if="variable.v" pun>&nbsp;=&nbsp;</span><span ng-if="variable.v" ng-bind-html="variable.$$html || (variable.$$html = renderOperand(variable.v))"></span><span pun>;</span><span ng-if="!variable.v" com sensitive>&nbsp;/* <span ng-bind-html="formatVariableValue(variable, variable.n)"></span> */</span></span></line>
<line pun dnd-nodrag dnd-draggable="variable" dnd-type="'variable'" dnd-moved="drag(variables, $index);" dnd-copied="copyVariable(variables, $index)" dnd-effect-allowed="copyMove">
<handle dnd-handle class="fa fa-sort"></handle>
<span ng-click="editVariable(variable);" dnd-nodrag><span pun ng-if="(variable.a == 's') && (variable.v)">const&nbsp;</span><span typ>{{variable.t}}&nbsp;</span><span var>{{variable.n}}</span><span ng-if="variable.v" pun>&nbsp;=&nbsp;</span><span ng-if="variable.v" ng-bind-html="variable.$$html || (variable.$$html = renderOperand(variable.v))"></span><span pun>;</span><span ng-if="!variable.v" com sensitive>&nbsp;/* <span ng-bind-html="formatVariableValue(variable, variable.n)"></span> */</span></span>
</line>
</div>
<line new data-ng-click="addVariable()">+ add a new variable</line>
</script>
Expand Down Expand Up @@ -2118,9 +2121,11 @@ <h3>Add a new task</h3>
</optgroup>
</select>
</div>
<label ng-repeat-start="operand in designer.parameters" class="col-lg-12 no-padding">{{operand.name}}{{operand.optional ? ' (optional)' : ''}}<span class="error" ng-if="!operand.valid">{{operand.error}}<span ng-if="operand.expressionVar"> (<a ng-click="autoAddVariable(operand.expressionVar); validateOperand(operand);">create it</a>)</span>&nbsp;<i class="fa fa-warning"></i></span></label>
<div class="alert alert-warning" ng-if="operand.warn">{{operand.warn}}</div>
<parameter ng-repeat-end ng-include="'operand'" ng-model="operand"></parameter>
<div ng-repeat="operand in designer.parameters" ng-hide="operand.hidden">
<label class="col-lg-12 no-padding">{{operand.name}}{{operand.optional ? ' (optional)' : ''}}<span class="error" ng-if="!operand.valid">{{operand.error}}<span ng-if="operand.expressionVar"> (<a ng-click="autoAddVariable(operand.expressionVar); validateOperand(operand);">create it</a>)</span>&nbsp;<i class="fa fa-warning"></i></span></label>
<div class="alert alert-warning" ng-if="operand.warn">{{operand.warn}}</div>
<parameter ng-include="'operand'" ng-model="operand"></parameter>
</div>
<label ng-if-start="!!designer.command"class="col-lg-12 no-padding">Only during these modes</label>
<div ng-if-end class="form-group">
<select data-actions-box="true" selectpicker class="selectpicker show-tick" data-width="100%" data-style="btn-warning" ng-model="designer.mode" data-mobile="{{mobile}}" multiple>
Expand Down
63 changes: 61 additions & 2 deletions dashboard/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,6 @@ app.directive('collapseControl', ['dataService', function(dataService) {
var id = (attr.target || attr.ariaControls || '').replace('#', '');
var wasCollapsed = dataService.isCollapsed(id);

console.log(attr);
if (wasCollapsed && 'ariaExpanded' in attr) {
element.attr('aria-expanded', 'false');
}
Expand All @@ -358,6 +357,46 @@ app.directive('collapseTarget', ['dataService', function(dataService) {
};
}]);

app.directive('taskedit', function() {
return {
restrict: 'A',
scope: false,
link: function(scope, elem, attr) {
var watchers = [];
function setupCommand(command) {
if (watchers.length > 0) {
for (var i = 0; i < watchers.length; i++) {
watchers[i]();
}
watchers = [];
}
// Custom visibility toggling for httpRequest parameters
if (command === 'httpRequest') {
function toggleHttpRequestFields() {
var parameters = scope.designer.parameters;
var method = parameters[1].data.c;
var useQueryString = method === 'GET' || method === 'DELETE' || method === 'HEAD';
var requestBodyTypeOperand = parameters[2];
var sendVariablesOperand = parameters[3];
var requestBodyOperand = parameters[4];
var contentTypeOperand = parameters[5];
var custom = requestBodyTypeOperand.data.c === 'CUSTOM' && !useQueryString;

requestBodyTypeOperand.hidden = useQueryString;
sendVariablesOperand.hidden = custom;
contentTypeOperand.hidden = requestBodyOperand.hidden = !custom || useQueryString;
}
watchers.push(
scope.$watch('designer.parameters[1].data.c', toggleHttpRequestFields),
scope.$watch('designer.parameters[2].data.c', toggleHttpRequestFields)
);
}
}
scope.$watch('designer.command', setupCommand);
}
};
});

app.filter('orderObjectBy', function() {
return function(items, field, reverse) {
var filtered = [];
Expand All @@ -372,6 +411,26 @@ app.filter('orderObjectBy', function() {
};
});

app.filter('dashify', function() {
return function(value) {
return dashify(value, { condense: true });
}
});

app.filter('uniqueDashify', function() {
var keyByUniqueValue = {};
return function(value, key) {
value = dashify(value, { condense: true });
var unique = value;
var i = 1;
while (unique in keyByUniqueValue && keyByUniqueValue[unique] !== key) {
unique = value + '-' + i++;
}
keyByUniqueValue[unique] = key;
return unique;
}
});



var config = app.config(['$routeProvider', '$locationProvider', '$sceDelegateProvider', '$rootScopeProvider', '$animateProvider', function ($routeProvider, $locationProvider, $sceDelegateProvider, $rootScopeProvider, $animateProvider) {
Expand Down Expand Up @@ -1989,4 +2048,4 @@ if (!String.prototype.endsWith) {
};
}

version = function() { return 'v0.3.104.20180323'; };
version = function() { return 'v0.3.105.20180628'; };
19 changes: 19 additions & 0 deletions dashboard/js/components/37.dashify.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*!
* dashify <https://github.com/jonschlinkert/dashify>
*
* Copyright (c) 2015-2017, Jon Schlinkert.
* Released under the MIT License.
*/

function dashify(str, options) {
if (typeof str !== 'string') {
throw new TypeError('expected a string');
}

return str.trim()
.replace(/([a-z])([A-Z])/g, '$1-$2')
.replace(/\W/g, m => /[À-ž]/.test(m) ? m : '-')
.replace(/^-+|-+$/g, '')
.replace(/-{2,}/g, function(m) { return options && options.condense ? '-' : m })
.toLowerCase();
};
9 changes: 8 additions & 1 deletion dashboard/js/components/components.min.js

Large diffs are not rendered by default.

34 changes: 32 additions & 2 deletions dashboard/js/modules/piston.module.js
Original file line number Diff line number Diff line change
Expand Up @@ -2175,6 +2175,20 @@ config.controller('piston', ['$scope', '$rootScope', 'dataService', '$timeout',
$scope.doValidatePiston();
}

$scope.copyVariable = function(list, index) {
var variable = list[index];
for (var i = 0; i < list.length; i++) {
if (i !== index && list[i].n === variable.n) {
list[i].n = list[i].n.replace(/(?:_(\d+))?$/, function(m, number) {
return '_' + ((+number || 0) + 1);
});
break;
}
}
$scope.autoSave();
$scope.doValidatePiston();
}


$scope.setDesignerType = function(type) {
$scope.designer.type = type;
Expand Down Expand Up @@ -4067,7 +4081,23 @@ config.controller('piston', ['$scope', '$rootScope', 'dataService', '$timeout',
}
display += ')';
} else {
display = !command.d ? command.n : command.d.replace(/\{(\d)\}/g, function(match, text) {
var displayFormat = command.d;
if (task.c === 'httpRequest') {
var method = task.p[1].c;
var useQueryString = method === 'GET' || method === 'DELETE' || method === 'HEAD';
var requestBodyType = task.p[2].c;
if (useQueryString) {
// with query [variables]
displayFormat += '[? with query {3}]';
} else if (requestBodyType === 'CUSTOM') {
// with data [request body] as type [content type]
displayFormat += '[? with {4}][? as type {5}]';
} else {
// with [request body type] encoded data [request body]
displayFormat += '[? with {2}][? encoded {3}]';
}
}
display = !displayFormat ? command.n : displayFormat.replace(/(?:\[\?(.*?))?\{(\d)\}(?:\s*\])?/g, function(match, prefix, text) {
var idx = parseInt(text);
if ((idx < 0) || (!task.p) || (idx >= task.p.length))
return ' (?) ';
Expand All @@ -4087,7 +4117,7 @@ config.controller('piston', ['$scope', '$rootScope', 'dataService', '$timeout',
if (!!value && !!command.p[idx].d) {
value = (!!task.p[idx] && !!task.p[idx].t) ? command.p[idx].d.replace('{v}', value) : '';
}
return value;
return (value ? (prefix || '') : '') + value;
}).replace(/(\{T\})/g, '°' + $scope.location.temperatureScale);
var icon = command.i;
if (icon) display = '<span pun><i class="fa fa-' + icon + '" aria-hidden="true"></i></span> ' + display;
Expand Down
2 changes: 1 addition & 1 deletion dist/dashboard/css/modules/piston.module.css

Large diffs are not rendered by default.

19 changes: 12 additions & 7 deletions dist/dashboard/html/modules/fuel.module.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,18 @@
<div class="form-group">
<button class="btn btn-default" ng-click="home()">Exit</button>
</div>
<li canister ng-repeat="canister in canisters">
<label ng-click="selectCanister(canister);">{{canister ? canister : 'Uncategorized'}}</label>
<ul fuelStreams>
<li ng-repeat="fuelStream in fuelStreams" ng-if="fuelStream.c == canister" ng-selected="!!fuelStream.selected">
<label ng-click="selectFuelStream(fuelStream);"><i class="fa fa-{{fuelStream.selected ? 'check-' : ''}}square-o" ng-click="toggleFuelStream(fuelStream); $event.stopPropagation();"></i> {{fuelStream.n}}<created>{{utcToString(fuelStream.t)}}</created></label>
</li>
</ul>
<li canister ng-repeat="canister in canisters" ng-class="'canister-' + canister | uniqueDashify:$index">
<label ng-click="selectCanister(canister);">
<span class="fa fa-caret-down collapse-control rotate-on-collapse pull-right" data-toggle="collapse" collapse-control data-target="#{{'collapse-' + canister | uniqueDashify:$index}}" aria-expanded="true" title="Hide/Show"></span>
{{canister ? canister : 'Uncategorized'}}
</label>
<div collapse-target ng-attr-id="{{'collapse' + canister | uniqueDashify:$index}}" class="collapse in">
<ul fuelStreams>
<li ng-repeat="fuelStream in fuelStreams" ng-if="fuelStream.c == canister" ng-selected="!!fuelStream.selected" ng-class="'fuel-stream-' + (fuelStream.n | dashify)">
<label ng-click="selectFuelStream(fuelStream);"><i class="fa fa-{{fuelStream.selected ? 'check-' : ''}}square-o" ng-click="toggleFuelStream(fuelStream); $event.stopPropagation();"></i> {{fuelStream.n}}<created>{{utcToString(fuelStream.t)}}</created></label>
</li>
</ul>
</div>
</li>
</ul>
<graph>
Expand Down
13 changes: 9 additions & 4 deletions dist/dashboard/html/modules/piston.module.html
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,10 @@ <h3>
<script type="text/ng-template" id="variables">
<div ng-repeat="variable in variables">
<line com ng-if="variable.z">/* {{variable.z}} */</line>
<line pun><span ng-click="editVariable(variable);"><span pun ng-if="(variable.a == 's') && (variable.v)">const&nbsp;</span><span typ>{{variable.t}}&nbsp;</span><span var>{{variable.n}}</span><span ng-if="variable.v" pun>&nbsp;=&nbsp;</span><span ng-if="variable.v" ng-bind-html="variable.$$html || (variable.$$html = renderOperand(variable.v))"></span><span pun>;</span><span ng-if="!variable.v" com sensitive>&nbsp;/* <span ng-bind-html="formatVariableValue(variable, variable.n)"></span> */</span></span></line>
<line pun dnd-nodrag dnd-draggable="variable" dnd-type="'variable'" dnd-moved="drag(variables, $index);" dnd-copied="copyVariable(variables, $index)" dnd-effect-allowed="copyMove">
<handle dnd-handle class="fa fa-sort"></handle>
<span ng-click="editVariable(variable);" dnd-nodrag><span pun ng-if="(variable.a == 's') && (variable.v)">const&nbsp;</span><span typ>{{variable.t}}&nbsp;</span><span var>{{variable.n}}</span><span ng-if="variable.v" pun>&nbsp;=&nbsp;</span><span ng-if="variable.v" ng-bind-html="variable.$$html || (variable.$$html = renderOperand(variable.v))"></span><span pun>;</span><span ng-if="!variable.v" com sensitive>&nbsp;/* <span ng-bind-html="formatVariableValue(variable, variable.n)"></span> */</span></span>
</line>
</div>
<line new data-ng-click="addVariable()">+ add a new variable</line>
</script>
Expand Down Expand Up @@ -2118,9 +2121,11 @@ <h3>Add a new task</h3>
</optgroup>
</select>
</div>
<label ng-repeat-start="operand in designer.parameters" class="col-lg-12 no-padding">{{operand.name}}{{operand.optional ? ' (optional)' : ''}}<span class="error" ng-if="!operand.valid">{{operand.error}}<span ng-if="operand.expressionVar"> (<a ng-click="autoAddVariable(operand.expressionVar); validateOperand(operand);">create it</a>)</span>&nbsp;<i class="fa fa-warning"></i></span></label>
<div class="alert alert-warning" ng-if="operand.warn">{{operand.warn}}</div>
<parameter ng-repeat-end ng-include="'operand'" ng-model="operand"></parameter>
<div ng-repeat="operand in designer.parameters" ng-hide="operand.hidden">
<label class="col-lg-12 no-padding">{{operand.name}}{{operand.optional ? ' (optional)' : ''}}<span class="error" ng-if="!operand.valid">{{operand.error}}<span ng-if="operand.expressionVar"> (<a ng-click="autoAddVariable(operand.expressionVar); validateOperand(operand);">create it</a>)</span>&nbsp;<i class="fa fa-warning"></i></span></label>
<div class="alert alert-warning" ng-if="operand.warn">{{operand.warn}}</div>
<parameter ng-include="'operand'" ng-model="operand"></parameter>
</div>
<label ng-if-start="!!designer.command"class="col-lg-12 no-padding">Only during these modes</label>
<div ng-if-end class="form-group">
<select data-actions-box="true" selectpicker class="selectpicker show-tick" data-width="100%" data-style="btn-warning" ng-model="designer.mode" data-mobile="{{mobile}}" multiple>
Expand Down
9 changes: 8 additions & 1 deletion dist/dashboard/js/webCoRE.min.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
public static String version() { return "v0.3.104.20180323" }
public static String version() { return "v0.3.105.20180628" }
/******************************************************************************/
/*** webCoRE DEFINITION ***/
/******************************************************************************/
Expand Down Expand Up @@ -156,10 +156,7 @@ private void broadcastEvent(deviceId, eventName, eventValue, eventTime) {
body: [d: deviceId, n: eventName, v: eventValue, t: eventTime]
]

httpPut(params){
resp ->resp.data
log.info("broadcastEvent response :: ${resp.data}")
}
asynchttpPut((String)null, params)

/*
asynchttp_v1.put(null, [
Expand Down

0 comments on commit da850cc

Please sign in to comment.