1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

All: Filter to sync target and refactored so that same code can be used by all clients

This commit is contained in:
Laurent Cozic 2017-12-05 19:21:01 +00:00
parent c703521b6c
commit 03ec406627
3 changed files with 30 additions and 43 deletions

View File

@ -7,7 +7,6 @@ const { Header } = require('./Header.min.js');
const { themeStyle } = require('../theme.js');
const { _ } = require('lib/locale.js');
const { ReportService } = require('lib/services/report.js');
const { BaseItem } = require('lib/models/base-item.js');
class StatusScreenComponent extends React.Component {
@ -15,7 +14,6 @@ class StatusScreenComponent extends React.Component {
super();
this.state = {
report: [],
disabledItems: [],
};
}
@ -26,11 +24,7 @@ class StatusScreenComponent extends React.Component {
async resfreshScreen() {
const service = new ReportService();
const report = await service.status(Setting.value('sync.target'));
const disabledItems = await BaseItem.syncDisabledItems();
this.setState({
report: report,
disabledItems: disabledItems,
});
this.setState({ report: report });
}
render() {
@ -70,7 +64,7 @@ class StatusScreenComponent extends React.Component {
);
}
function renderBodyHtml(report, disabledItems) {
function renderBodyHtml(report) {
let output = [];
let baseStyle = {
paddingLeft: 6,
@ -84,27 +78,6 @@ class StatusScreenComponent extends React.Component {
let sectionsHtml = [];
if (disabledItems.length) {
const titleHtml = [renderSectionTitleHtml('disabled_sync_items', _('Items that cannot be synchronised'))];
const trsHtml = [];
for (let i = 0; i < disabledItems.length; i++) {
const row = disabledItems[i];
trsHtml.push(<tr key={'item_' + i}><td style={theme.textStyle}>{row.item.title}</td><td style={theme.textStyle}>{row.syncInfo.sync_disabled_reason}</td></tr>);
}
sectionsHtml.push(
<div key={'disabled_sync_items'}>
{titleHtml}
<table>
<tbody>
<tr><th style={theme.textStyle}>{_('Name')}</th><th style={theme.textStyle}>{_('Reason')}</th></tr>
{trsHtml}
</tbody>
</table>
</div>
);
}
for (let i = 0; i < report.length; i++) {
let section = report[i];
if (!section.body.length) continue;
@ -118,9 +91,7 @@ class StatusScreenComponent extends React.Component {
);
}
console.info(this.state.disabledItems);
let body = renderBodyHtml(this.state.report, this.state.disabledItems);
let body = renderBodyHtml(this.state.report);
return (
<div style={style}>

View File

@ -383,8 +383,8 @@ class BaseItem extends BaseModel {
throw new Error('Invalid type: ' + type);
}
static async syncDisabledItems() {
const rows = await this.db().selectAll('SELECT * FROM sync_items WHERE sync_disabled = 1');
static async syncDisabledItems(syncTargetId) {
const rows = await this.db().selectAll('SELECT * FROM sync_items WHERE sync_disabled = 1 AND sync_target = ?', [syncTargetId]);
let output = [];
for (let i = 0; i < rows.length; i++) {
const item = await this.loadItem(rows[i].item_type, rows[i].item_id);

View File

@ -109,8 +109,21 @@ class ReportService {
async status(syncTarget) {
let r = await this.syncStatus(syncTarget);
let sections = [];
let section = null;
let section = { title: _('Sync status (synced items / total items)'), body: [] };
const disabledItems = await BaseItem.syncDisabledItems(syncTarget);
if (disabledItems.length) {
section = { title: _('Items that cannot be synchronised'), body: [] };
for (let i = 0; i < disabledItems.length; i++) {
const row = disabledItems[i];
section.body.push(_('"%s": "%s"', row.item.title, row.syncInfo.sync_disabled_reason));
}
sections.push(section);
}
section = { title: _('Sync status (synced items / total items)'), body: [] };
for (let n in r.items) {
if (!r.items.hasOwnProperty(n)) continue;
@ -138,16 +151,19 @@ class ReportService {
sections.push(section);
section = { title: _('Coming alarms'), body: [] };
const alarms = await Alarm.allDue();
for (let i = 0; i < alarms.length; i++) {
const alarm = alarms[i];
const note = await Note.load(alarm.note_id);
section.body.push(_('On %s: %s', time.formatMsToLocal(alarm.trigger_time), note.title));
}
sections.push(section);
if (alarms.length) {
section = { title: _('Coming alarms'), body: [] };
for (let i = 0; i < alarms.length; i++) {
const alarm = alarms[i];
const note = await Note.load(alarm.note_id);
section.body.push(_('On %s: %s', time.formatMsToLocal(alarm.trigger_time), note.title));
}
sections.push(section);
}
return sections;
}