1.0.0-rc.103

Former-commit-id: 5dd5c2fccb4e2a0a396cabe925d361d104e272fc
TangShanKaiPing
wanggang 6 years ago
parent 754b468358
commit 77438e6f7d

@ -417,15 +417,14 @@ namespace IoTCenter.Controllers
/************************************************************/ /************************************************************/
public IActionResult AllPowerOn(string connectionId, string[] nodes) public IActionResult Power(string token,string connectionId, string method,string[] numbers)
{ {
this.Power(connectionId, nodes, "On", o => o.Name.Contains("开关") || o.Name.Contains("插座")); var userName = this.GetUserName(token);
return Json(ApiResponse.AsyncSuccess()); if (string.IsNullOrEmpty(userName))
}
public IActionResult AllPowerOff(string connectionId, string[] nodes)
{ {
this.Power(connectionId, nodes, "Off", o => o.Name.Contains("开关") || o.Name.Contains("插座")); return Forbid();
}
this.Power(connectionId, numbers, method, o => o.Name.Contains("开关") || o.Name.Contains("插座") || o.Name.Contains("灯"));
return Json(ApiResponse.AsyncSuccess()); return Json(ApiResponse.AsyncSuccess());
} }

@ -3,10 +3,27 @@
} }
<br /> <br />
<div class="row"> <div class="row">
<div class="col-md-12" v-if="model.length">
<div class="card">
<div class="card-header">
<div class="card-title">
<input type="checkbox" id="All" class="checkall" v-on:change="SelectNode($event)" />
<label for="All" class="btn btn-sm btn-info" style="height:31px;margin-bottom:0;">全选</label>
<button class="btn btn-sm btn-info uncheck" v-on:click="SelectNode($event)">反选</button>
</div>
<div class="card-tools">
<button class="btn btn-success" v-on:click="Power('On')">开</button>
<button class="btn btn-success" v-on:click="Power('Off')">关</button>
</div>
</div>
</div>
</div>
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in GetNodes()"> <div class="col-md-2 col-sm-4 col-xs-6" v-for="item in GetNodes()">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h3 class="card-title">{{item.Name}}</h3> <h3 class="card-title">
<label style="font-weight:normal;"><input type="checkbox" name="numbers[]" class="item" :value="item.Number" v-on:change="SelectNode($event)">{{item.Name}}</label>
</h3>
<div class="card-tools"><span data-toggle="tooltip" class="badge bg-green">{{item.DeviceCount}}</span></div> <div class="card-tools"><span data-toggle="tooltip" class="badge bg-green">{{item.DeviceCount}}</span></div>
</div> </div>
<a class="card-body" :href="'/Home/Node/?number='+item.Number" style="display:block;text-align:center;"> <a class="card-body" :href="'/Home/Node/?number='+item.Number" style="display:block;text-align:center;">

@ -1,5 +1,5 @@
{ {
"version": "1.0.0-rc.102", "version": "1.0.0-rc.103",
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Warning", "Default": "Warning",

@ -15,6 +15,19 @@ data = function data() {
methods = { methods = {
GetNodes() { GetNodes() {
return Enumerable.from(this.model).orderBy('o=>o.DisplayOrder').toArray(); return Enumerable.from(this.model).orderBy('o=>o.DisplayOrder').toArray();
},
SelectNode: Select,
Power(method) {
var numbers = [];
$('.item:checked').each(function () {
numbers.push($(this).val());
});
if (numbers.length) {
ajax('/App/Power', { token: token, connectionId: connectionId, method: method, numbers: numbers }, 'post');
}
else {
toastr.error('没有选中任何项');
}
} }
}; };
function onMessage(method, json, to, from) { function onMessage(method, json, to, from) {

@ -605,3 +605,31 @@ $(document).on('click', '.segmented .button', function (e) {
current.addClass('button-active'); current.addClass('button-active');
} }
}); });
function Select(e) {
var checkbox = $(e.target);
if (checkbox.hasClass('checkall')) {
if (e.target.checked) {
$('input.item:visible').not(':checked').prop("checked", true);
}
else {
$('input.item:visible').filter(':checked').prop("checked", false);
}
}
else if (checkbox.hasClass('uncheck')) {
$('input.item:visible').each(function () {
$(this).prop("checked", !$(this).prop("checked")).change();
});
}
var parent = $('input.checkall');
if ($('input.item').not(':checked').length === 0) {
parent.prop("indeterminate", false);
parent.prop("checked", true);
}
else if ($('input.item').filter(':checked').length === 0) {
parent.prop("indeterminate", false);
parent.prop("checked", false);
}
else {
parent.prop("indeterminate", true);
}
}

@ -33,41 +33,19 @@ methods = {
} }
return null; return null;
}, },
SelectDevice(e) { SelectDevice:Select,
var checkbox = $(e.target);
if (checkbox.hasClass('checkall')) {
if (e.target.checked) {
$('input.item').not(':checked').prop("checked", true);
}
else {
$('input.item').filter(':checked').prop("checked", false);
}
}
else if (checkbox.hasClass('uncheck')) {
$('input.item').each(function () {
$(this).prop("checked", !$(this).prop("checked")).change();
});
}
var parent = $('input.checkall');
if ($('input.item').not(':checked').length === 0) {
parent.prop("indeterminate", false);
parent.prop("checked", true);
}
else if ($('input.item').filter(':checked').length === 0) {
parent.prop("indeterminate", false);
parent.prop("checked", false);
}
else {
parent.prop("indeterminate", true);
}
},
CallApiAll(method) { CallApiAll(method) {
var numbers = []; var numbers = [];
$('.item:checked').each(function () { $('.item:checked').each(function () {
numbers.push($(this).val()); numbers.push($(this).val());
}); });
if (numbers.length) {
ajax('/App/ExecApiAll', { token: token, connectionId: connectionId, method: vm.model.Path + method, numbers: numbers }, 'post'); ajax('/App/ExecApiAll', { token: token, connectionId: connectionId, method: vm.model.Path + method, numbers: numbers }, 'post');
} }
else {
toastr.error('没有选中任何项');
}
}
}; };
function onMessage(method, json, to, from) { function onMessage(method, json, to, from) {
debug(method + ':' + json); debug(method + ':' + json);

@ -28,18 +28,37 @@
search-container=".search-list" search-container=".search-list"
search-in=".item-title"></f7-searchbar> search-in=".item-title"></f7-searchbar>
</f7-navbar> </f7-navbar>
<div class="col-100" v-if="model.length">
<div class="card">
<div class="card-header">
<div>
<input type="checkbox" id="All" class="checkall" v-on:change="SelectNode($event)" />
<label for="All" class="button button-raised" style="display:inline-block;">全选</label>
<label class="button button-raised uncheck" style="display:inline-block;" v-on:click="SelectNode($event)">反选</label>
</div>
<div class="row">
<label class="button button-raised" v-on:click="Power('On')"></label>
<label class="button button-raised" v-on:click="Power('Off')"></label>
</div>
</div>
</div>
</div>
<f7-list class="searchbar-not-found"> <f7-list class="searchbar-not-found">
<f7-list-item title="没有匹配的结果"></f7-list-item> <f7-list-item title="没有匹配的结果"></f7-list-item>
</f7-list> </f7-list>
<f7-list class="search-list searchbar-found"> <f7-list class="search-list searchbar-found">
<li style="width:33.3%;display:inline-block;" v-if="model" v-for="n in GetNodes()"> <li style="width:33.3%;display:inline-block;" v-if="model" v-for="item in GetNodes()">
<a :href="'node.html?number='+n.Number" class="card external" style="display:block;text-align:center;"> <div class="card" >
<div class="card-header"> <div class="card-header">
<span class="item-title">{{n.Name}}</span> <h3 class="card-title">
<span class="right"><span class="badge color-green">{{n.DeviceCount}}</span></span> <label style="font-weight:normal;"><input type="checkbox" name="numbers[]" class="item" :value="item.Number" v-on:change="SelectNode($event)"><span class="item-title">{{item.Name}}</span></label>
</h3>
<span class="right"><span class="badge color-green">{{item.DeviceCount}}</span></span>
</div> </div>
<img style="margin:0 auto;max-width:64px;" :src="server+'/IoTCenter'+n.Image" /> <a class="external" style="display:block;text-align:center;" :href="'node.html?number='+item.Number" >
<img style="margin:0 auto;max-width:64px;" :src="server+'/IoTCenter'+item.Image" />
</a> </a>
</div>
</li> </li>
</f7-list> </f7-list>
<f7-toolbar tabbar labels position="bottom"> <f7-toolbar tabbar labels position="bottom">

@ -1,5 +1,5 @@
{ {
"version": "1.0.0-rc.102", "version": "1.0.0-rc.103",
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Warning", "Default": "Warning",

Loading…
Cancel
Save