From b69542011446a1c320ff8e1997f690c3754c7c5e Mon Sep 17 00:00:00 2001 From: coderaiser Date: Wed, 2 Aug 2017 12:02:44 +0300 Subject: [PATCH] rafactor(cloudfunc) buildFromJSON: getHeaderField: add --- common/cloudfunc.js | 31 +++++++++++++++++++++---------- test/common/cloudfunc.js | 12 ++++++++++++ 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/common/cloudfunc.js b/common/cloudfunc.js index bf63f9c0..9d93467c 100644 --- a/common/cloudfunc.js +++ b/common/cloudfunc.js @@ -1,9 +1,12 @@ 'use strict'; const rendy = require('rendy'); +const currify = require('currify/legacy'); const store = require('fullstore/legacy'); const Entity = require('./entity'); +const getHeaderField = currify(_getHeaderField); + /* КОНСТАНТЫ (общие для клиента и сервера)*/ /* название программы */ @@ -18,6 +21,7 @@ module.exports.FS = FS; module.exports.apiURL = '/api/v1'; module.exports.MAX_FILE_SIZE = 500 * 1024; module.exports.Entity = Entity; +module.exports.getHeaderField = getHeaderField; module.exports.formatMsg = (msg, name, status) => { status = status || 'ok'; @@ -121,19 +125,14 @@ module.exports.buildFromJSON = (params) => { path : htmlPath }); - let name = 'name'; - let size = 'size'; - let date = 'date'; const owner = 'owner'; const mode = 'mode'; - const arrow = order === 'asc' ? '↑' : '↓'; - if (sort === 'name' && order !== 'asc') - name += arrow; - else if (sort === 'size') - size += arrow; - else if (sort === 'date') - date += arrow; + const getFieldName = getHeaderField(sort, order); + + const name = getFieldName('name'); + const size = getFieldName('size'); + const date = getFieldName('date'); const header = rendy(templateFile, { tag : 'div', @@ -241,3 +240,15 @@ function getSize(size) { return size; } +function _getHeaderField(sort, order, name) { + const arrow = order === 'asc' ? '↑' : '↓'; + + if (sort !== name) + return name; + + if (sort === 'name' && order === 'asc') + return name; + + return `${name}${arrow}`; +} + diff --git a/test/common/cloudfunc.js b/test/common/cloudfunc.js index 2cab15cc..b0c5c8fe 100644 --- a/test/common/cloudfunc.js +++ b/test/common/cloudfunc.js @@ -187,3 +187,15 @@ test('cloudfunc: getTitle: name, path', (t) => { t.end(); }); +test('cloudfunc: getHeaderField', (t) => { + const sort = 'name'; + const order = 'desc'; + const name = 'name'; + + const result = CloudFunc.getHeaderField(sort, order, name); + const expected = 'name↓'; + + t.equal(result, expected, 'should set desc arrow'); + t.end(); +}); +