Skip to content

Commit

Permalink
Automated start/stop support (#395) (#398)
Browse files Browse the repository at this point in the history
Parent issue: sequentech/meta#124
  • Loading branch information
edulix committed Sep 20, 2023
1 parent e832798 commit 6dcd8d2
Show file tree
Hide file tree
Showing 21 changed files with 520 additions and 735 deletions.
1 change: 0 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ angular.module(
'angularFileUpload',
'dndLists',
'angularLoad',
'angular-date-picker-polyfill',
'ng-autofocus',
'LocalStorageModule',
'common-ui'
Expand Down
1 change: 1 addition & 0 deletions app.less
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
@import "avAdmin/admin-directives/tasks/view-task-logs-modal.less";
@import "avAdmin/admin-directives/census-field/census-field.less";
@import "avAdmin/admin-directives/dashboard/send-auth-codes-modal-confirm.less";
@import "avAdmin/admin-directives/dashboard/scheduled-events-modal.less";
@import "avAdmin/admin-directives/dashboard/key-distribution-ceremony-modal.less";
@import "avAdmin/admin-directives/dashboard/login-trustee-ceremony-modal.less";
@import "avAdmin/admin-directives/dashboard/download-share-ceremony-modal.less";
Expand Down
130 changes: 130 additions & 0 deletions avAdmin/admin-directives/activity-log/activity-log.html
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,136 @@ <h2 ng-i18next>avAdmin.activityLog.title</h2>
<div ng-if="obj.action_name === 'authevent:edit'" ng-i18next>
[i18next:html](obj)avAdmin.activityLog.action.authevent.edit
</div>
<div ng-if="obj.action_name === 'authevent:start:error'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event]
})avAdmin.activityLog.action.authevent.startError
</div>
<div ng-if="obj.action_name === 'authevent:stop:error'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event]
})avAdmin.activityLog.action.authevent.stopError
</div>
<div ng-if="obj.action_name === 'authevent:suspend:error'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event]
})avAdmin.activityLog.action.authevent.suspendError
</div>
<div ng-if="obj.action_name === 'authevent:resume:error'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event]
})avAdmin.activityLog.action.authevent.resumeError
</div>

<div ng-if="obj.action_name === 'authevent:start:success'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event]
})avAdmin.activityLog.action.authevent.startSuccess
</div>
<div ng-if="obj.action_name === 'authevent:stop:success'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event]
})avAdmin.activityLog.action.authevent.stopSuccess
</div>
<div ng-if="obj.action_name === 'authevent:suspend:success'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event]
})avAdmin.activityLog.action.authevent.suspendSuccess
</div>
<div ng-if="obj.action_name === 'authevent:resume:success'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event]
})avAdmin.activityLog.action.authevent.resumeSuccess
</div>

<div ng-if="obj.action_name === 'authevent:start_voting:scheduled'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
new_event_date: obj.metadata.new_event_date,
new_task_id: obj.metadata.new_task_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event],
})avAdmin.activityLog.action.authevent.startVotingScheduled
</div>
<div ng-if="obj.action_name === 'authevent:start_voting:revoked'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
old_event_date: obj.metadata.old_event_date,
old_task_id: obj.metadata.old_task_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event],
})avAdmin.activityLog.action.authevent.startVotingRevoked
</div>
<div ng-if="obj.action_name === 'authevent:end_voting:scheduled'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
new_event_date: obj.metadata.new_event_date,
new_task_id: obj.metadata.new_task_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event],
})avAdmin.activityLog.action.authevent.endVotingScheduled
</div>
<div ng-if="obj.action_name === 'authevent:end_voting:revoked'" ng-i18next>
[i18next:html]({
executer_username: obj.executer_username,
executer_id: obj.executer_id,
receiver_username: obj.receiver_username,
receiver_id: obj.receiver_id,
event_id: obj.event_id,
old_event_date: obj.metadata.old_event_date,
old_task_id: obj.metadata.old_task_id,
child_election: election.childrenElectionNames[obj.metadata.auth_event],
})avAdmin.activityLog.action.authevent.endVotingRevoked
</div>


<div ng-if="obj.action_name === 'authevent:start'" ng-i18next>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,31 @@
</label>
</div>
</div>
<div class="block" ng-click="$event.preventDefault(); $event.stopPropagation()">
<div class="block" ng-click="$event.stopPropagation()">
<span class="spaced" ng-i18next>
avAdmin.columnFilter.minDate
</span>
<button type='button' tabindex='0' ng-model='filter.min' aa-date-time-input>
<span ng-show='filter.min'>{{ filter.min | date:'short'}}</span>
<span ng-hide='filter.min'>-</span>
</button>
<input
id="filter-min-selector"
name="filter-min-selector"
type='datetime-local'
tabindex='0'
ng-model='filter.min'
/>
<a ng-click="filter.min=''" ng-disabled="!filter.min" class="times">
<i class="fa fa-times"></i>
</a>
</div>
<div class="block" ng-click="$event.preventDefault(); $event.stopPropagation()">
<div class="block" ng-click="$event.stopPropagation()">
<span class="spaced" ng-i18next>
avAdmin.columnFilter.maxDate
</span>
<button type='button' tabindex='0' ng-model='filter.max' aa-date-time-input>
<span ng-show='filter.max'>{{ filter.max | date:'short'}}</span>
<span ng-hide='filter.max'>-</span>
</button>
<input
id="filter-max-selector"
name="filter-max-selector"
type='datetime-local'
ng-model='filter.max'
/>
<a ng-click="filter.max=''" ng-disabled="!filter.max" class="times">
<i class="fa fa-times"></i>
</a>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,8 @@
font-weight: normal;
}

.aa-date-input, [aa-date-time-input] {
display: inline-block;
width: 180px;
border: none;
box-shadow: none;
}

[aa-date-time-input] {
padding: 5px;
input[type='datetime-local'] {
float: none !important;
}

// reset date link
Expand Down
22 changes: 22 additions & 0 deletions avAdmin/admin-directives/dashboard/dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,32 @@ <h2>
<dl class="dl-horizontal">
<dt ng-i18next>avAdmin.dashboard.status</dt>
<dd ng-i18next="{{ election.status }}"></dd>

<dt ng-i18next>avAdmin.dashboard.authentication</dt>
<dd>{{ election.auth.authentication }}</dd>

<dt ng-i18next>avAdmin.dashboard.electionid</dt>
<dd>{{ election.id }}</dd>

<dt
ng-if="!!election.scheduled_events.start_voting.event_at"
ng-i18next="avAdmin.dashboard.scheduledStartDate"
></dt>
<dd
ng-if="!!election.scheduled_events.start_voting.event_at"
>
{{ election.scheduled_events.start_voting.event_at }}
</dd>

<dt
ng-if="!!election.scheduled_events.end_voting.event_at"
ng-i18next="avAdmin.dashboard.scheduledStopDate"
></dt>
<dd
ng-if="!!election.scheduled_events.end_voting.event_at"
>
{{ election.scheduled_events.end_voting.event_at }}
</dd>
</dl>
</div>

Expand Down
57 changes: 54 additions & 3 deletions avAdmin/admin-directives/dashboard/dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ angular.module('avAdmin')
'avAdminDashboard',
function(
$q,
$i18next,
$state,
Authmethod,
Plugins,
Expand All @@ -29,7 +30,8 @@ angular.module('avAdmin')
PercentVotesService,
ConfigService,
SendMsg,
KeysCeremony)
KeysCeremony,
ConfigureScheduledEvents)
{
// we use it as something similar to a controller here
function link(scope, element, attrs)
Expand Down Expand Up @@ -120,7 +122,7 @@ angular.module('avAdmin')
scope.nextaction = scope.nextactions[scope.index - 1];

if (
el.status === 'results_ok' ||
el.status === 'results_ok' ||
el.status === 'stopped'
) {
ElectionsApi.results(el);
Expand Down Expand Up @@ -302,6 +304,20 @@ angular.module('avAdmin')
}
}
}
if (
el.scheduled_events &&
el.scheduled_events.start_voting &&
el.scheduled_events.start_voting.task_id
) {
delete el.scheduled_events.start_voting.task_id;
}
if (
el.scheduled_events &&
el.scheduled_events.end_voting &&
el.scheduled_events.end_voting.task_id
) {
delete el.scheduled_events.end_voting.task_id;
}
el.id = null;
el.raw = null;
scope.current = el;
Expand Down Expand Up @@ -613,6 +629,20 @@ angular.module('avAdmin')
KeysCeremony.launchOpeningCeremony(scope.election);
}

function configureScheduledEvents() {
ConfigureScheduledEvents.launchModal(
scope.election,
function onSuccess()
{
scope.msg = "avAdmin.dashboard.modals.configureScheduledEvents.success";
},
function onError() {
scope.error = $i18next("avAdmin.dashboard.modals.configureScheduledEvents.error");
}

);
}

function setAutoreload(electionId)
{
ElectionsApi.autoreloadStats(
Expand All @@ -635,6 +665,15 @@ angular.module('avAdmin')
if (scope.election.id === el.id)
{
scope.election = el;
scope.index = scope.getStatusIndex(el.status) + 1;
scope.nextaction = scope.nextactions[scope.index - 1];

if (
el.status === 'results_ok' ||
el.status === 'stopped'
) {
ElectionsApi.results(el);
}
}
}
);
Expand Down Expand Up @@ -1330,6 +1369,17 @@ angular.module('avAdmin')
return scope.hasPerms(["edit"]);
}
},
{
i18nString: 'configureScheduledEvents',
iconClass: 'fa fa-clock',
actionFunc: function() { return scope.configureScheduledEvents(); },
enableFunc: function() {
return (
scope.perms.val.indexOf("schedule-events") !== -1 ||
scope.perms.val.indexOf("edit") !== -1
);
}
},
];

scope.permittedActions = function () {
Expand Down Expand Up @@ -1419,7 +1469,8 @@ angular.module('avAdmin')
showResults: showResults,
toggleDownloadButton: toggleDownloadButton,
launchKeyDistributionCeremony: launchKeyDistributionCeremony,
launchOpeningCeremony: launchOpeningCeremony
launchOpeningCeremony: launchOpeningCeremony,
configureScheduledEvents: configureScheduledEvents,
});

// initialize
Expand Down
4 changes: 4 additions & 0 deletions avAdmin/admin-directives/dashboard/dashboard.less
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,10 @@
white-space: normal;
}

dl.dl-horizontal dt, dl.dl-horizontal dd {
font-size: 20px;
}

.popover {
position: initial;
max-width: 100%;
Expand Down
Loading

0 comments on commit 6dcd8d2

Please sign in to comment.