From d0c4378791b54faf1f5c20c61f8910d67518e811 Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Thu, 4 Feb 2021 21:52:52 +0700 Subject: [PATCH 01/15] OC-14425 Retrieve kobocat application info --- kpi/urls.py | 2 +- oc/views.py | 31 ++++++++++++++++--------------- package.json | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/kpi/urls.py b/kpi/urls.py index 13ec580a2b..5b86aff184 100644 --- a/kpi/urls.py +++ b/kpi/urls.py @@ -139,5 +139,5 @@ 'kobo.apps.superuser_stats.views.user_report'), url(r'^superuser_stats/user_report/(?P[^/]+)$', 'kobo.apps.superuser_stats.views.retrieve_user_report'), - url(r'app_info$', app_info, name='app_info'), + url(r'app_info/$', app_info, name='app_info'), ] diff --git a/oc/views.py b/oc/views.py index a8cb185f95..5c78d3937c 100644 --- a/oc/views.py +++ b/oc/views.py @@ -24,6 +24,7 @@ from kpi.utils.domain import get_subdomain from kpi.utils.log import logging as kpi_logging +from kobo.apps.service_health.views import get_response logger = logging.getLogger(__name__) @@ -279,18 +280,6 @@ def logout(request, next_page=None): if next_page: request.session['next'] = next_page -class OCAppInfo(object): - def __init__(self, **kwargs): - setattr(self, 'name', kwargs.get('name', 'FormDesigner')) - setattr(self, 'version', kwargs.get('version', None)) - -class OCAppInfoSerializer(serializers.Serializer): - name = serializers.CharField(max_length=256) - version = serializers.CharField(max_length=256) - - def create(self, app_info): - return OCAppInfo(**app_info) - @csrf_exempt def app_info(request): if request.method == 'GET': @@ -302,6 +291,18 @@ def app_info(request): except IOError: return HttpResponseNotFound() - appInfo = OCAppInfo(version=package_info['version']) - serializer = OCAppInfoSerializer(appInfo) - return JsonResponse(serializer.data) + failure, kobocat_message, kobocat_content = get_response(settings.KOBOCAT_INTERNAL_URL + '/app_info/') + + kobocat_data = {} + if not failure: + kobocat_data = json.loads(kobocat_content) + + kpi_data = { + "name": package_info["name"], + "description": package_info["description"], + "version": package_info["version"] + } + + data = [kpi_data, kobocat_data] + + return JsonResponse(data, safe=False) diff --git a/package.json b/package.json index b2b3fae72d..841e078a07 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "kpi", "version": "2.1.2", - "description": "KoBoToolbox frontend interface.", + "description": "form designer ui", "devDependencies": { "@mapbox/leaflet-omnivore": "^0.3.4", "alertifyjs": "^1.9.0", From 0c0a3d45c2808c748ce495978de057d8a597e66d Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Fri, 5 Feb 2021 22:05:33 +0700 Subject: [PATCH 02/15] OC-14435 Make Calculation field in Form Designer bigger --- .../partials/form_builder/_card_settings.scss | 6 +- jsapp/xlform/src/view.rowDetail.coffee | 56 ++++++++++++++++--- 2 files changed, 51 insertions(+), 11 deletions(-) diff --git a/jsapp/scss/stylesheets/partials/form_builder/_card_settings.scss b/jsapp/scss/stylesheets/partials/form_builder/_card_settings.scss index 53ee9d34f7..5fc49dd8c3 100644 --- a/jsapp/scss/stylesheets/partials/form_builder/_card_settings.scss +++ b/jsapp/scss/stylesheets/partials/form_builder/_card_settings.scss @@ -122,7 +122,8 @@ } } - input[type="text"] { + input[type="text"], + textarea { width: 85%; padding: 2px; font-size: 13px; @@ -142,7 +143,8 @@ color: $cool-red; input.text, - select { + select, + textarea { border-color: $cool-red; } } diff --git a/jsapp/xlform/src/view.rowDetail.coffee b/jsapp/xlform/src/view.rowDetail.coffee index c0b1cae75c..1b373c23de 100644 --- a/jsapp/xlform/src/view.rowDetail.coffee +++ b/jsapp/xlform/src/view.rowDetail.coffee @@ -70,7 +70,7 @@ module.exports = do -> # the model's value is reflected in the element and changes # to the element are reflected in the model (with transformFn # applied) - el = opts.el || @$('input').get(0) + el = opts.el || @$('input').get(0) || @$('textarea').get(0) $el = $(el) transformFn = opts.transformFn || false @@ -128,7 +128,7 @@ module.exports = do -> @_insertInDOM rowView.defaultRowDetailParent makeFieldCheckCondition: (opts={}) -> - el = opts.el || @$('input').get(0) + el = opts.el || @$('input').get(0) || @$('textarea').get(0) $el = $(el) fieldClass = opts.fieldClass || 'input-error' message = opts.message || "This field is required" @@ -165,7 +165,7 @@ module.exports = do -> showOrHideCondition() removeFieldCheckCondition: (opts={}) -> - el = opts.el || @$('input').get(0) + el = opts.el || @$('input').get(0) || @$('textarea').get(0) $el = $(el) fieldClass = opts.fieldClass || 'input-error' @@ -189,6 +189,14 @@ module.exports = do -> else @field """""", cid, key_label + textarea: (cid, key, key_label = key, input_class = '', placeholder_text='', max_length = '') -> + if placeholder_text is not '' + placeholder_text = _t(placeholder_text) + if max_length is '' + @field """
diff --git a/jsapp/xlform/src/view.rowDetail.coffee b/jsapp/xlform/src/view.rowDetail.coffee index 087e256491..2e53911b3d 100644 --- a/jsapp/xlform/src/view.rowDetail.coffee +++ b/jsapp/xlform/src/view.rowDetail.coffee @@ -369,6 +369,10 @@ module.exports = do -> @model.set 'value', value @model.deduplicate @model.getSurvey(), @model.getSurvey().rowItemNameMaxLength ) + + @model.on 'change:value', () => + @$el.parents('.survey__row__item').find('.card__header-name').html(@model.getValue()) + update_view = () => @$el.find('input').eq(0).val(@model.get("value") || '') update_view() From 13ef86b85100491925b6fc7a5cd33d412de52e1f Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Tue, 16 Mar 2021 17:51:47 +0700 Subject: [PATCH 08/15] OC-12846 Fixed bug on group item name changes all item within group --- jsapp/xlform/src/view.rowDetail.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsapp/xlform/src/view.rowDetail.coffee b/jsapp/xlform/src/view.rowDetail.coffee index 2e53911b3d..3e8b3c0bfd 100644 --- a/jsapp/xlform/src/view.rowDetail.coffee +++ b/jsapp/xlform/src/view.rowDetail.coffee @@ -371,7 +371,7 @@ module.exports = do -> ) @model.on 'change:value', () => - @$el.parents('.survey__row__item').find('.card__header-name').html(@model.getValue()) + @$el.closest('.survey__row__item').find('.card__header-name').html(@model.getValue()) update_view = () => @$el.find('input').eq(0).val(@model.get("value") || '') update_view() From 540d719e492026e205949ee3e39b0472d1d31fbe Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Wed, 17 Mar 2021 17:12:15 +0700 Subject: [PATCH 09/15] OC-14674 Form Designer not saving String Values from the logic builder correctly (not quoted) --- jsapp/xlform/src/mv.skipLogicHelpers.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsapp/xlform/src/mv.skipLogicHelpers.coffee b/jsapp/xlform/src/mv.skipLogicHelpers.coffee index 07cb29e6d1..bceac881d9 100644 --- a/jsapp/xlform/src/mv.skipLogicHelpers.coffee +++ b/jsapp/xlform/src/mv.skipLogicHelpers.coffee @@ -456,7 +456,7 @@ module.exports = do -> ops.GT #3 ops.GE #4 ] - equality_operator_type: 'basic' + equality_operator_type: 'text' response_type: 'dropdown' name: 'select_one' select_multiple: From 2f11e5149badceb1e7f268750a9e7e715b3196d6 Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Wed, 17 Mar 2021 17:12:15 +0700 Subject: [PATCH 10/15] OC-14674 Form Designer not saving String Values from the logic builder correctly (not quoted) --- jsapp/xlform/src/mv.skipLogicHelpers.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsapp/xlform/src/mv.skipLogicHelpers.coffee b/jsapp/xlform/src/mv.skipLogicHelpers.coffee index 07cb29e6d1..bceac881d9 100644 --- a/jsapp/xlform/src/mv.skipLogicHelpers.coffee +++ b/jsapp/xlform/src/mv.skipLogicHelpers.coffee @@ -456,7 +456,7 @@ module.exports = do -> ops.GT #3 ops.GE #4 ] - equality_operator_type: 'basic' + equality_operator_type: 'text' response_type: 'dropdown' name: 'select_one' select_multiple: From 27802f6924e408ba93584b44bc8c887738ae4d4f Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Wed, 14 Apr 2021 17:20:09 +0700 Subject: [PATCH 11/15] OC-14435 Show textarea with all the contents full text if there's a content in it --- jsapp/xlform/src/view.rowDetail.coffee | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/jsapp/xlform/src/view.rowDetail.coffee b/jsapp/xlform/src/view.rowDetail.coffee index 3e8b3c0bfd..94b22e18ab 100644 --- a/jsapp/xlform/src/view.rowDetail.coffee +++ b/jsapp/xlform/src/view.rowDetail.coffee @@ -492,6 +492,12 @@ module.exports = do -> afterRender: -> $textarea = $(@$('textarea').get(0)) $textarea.val(@model.get("value")) + if @model.get("value")? + setTimeout => + textareaScrollHeight = $textarea.prop('scrollHeight') + $textarea.css("height", "") + $textarea.css("height", textareaScrollHeight) + , 1 $textarea.on 'blur', () => @changeModelValue() $textarea.on 'change', () => @@ -1033,6 +1039,13 @@ module.exports = do -> $textarea = $(@$('textarea').get(0)) $textarea.val(@model.get("value")) + if @model.get("value")? + setTimeout => + textareaScrollHeight = $textarea.prop('scrollHeight') + $textarea.css("height", "") + $textarea.css("height", textareaScrollHeight) + , 1 + questionType = @model._parent.get('type').get('typeId') if questionType is 'calculate' @makeRequired() From da6487fe95033a3da0a4647a52f2491d6758660f Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Wed, 14 Apr 2021 20:33:58 +0700 Subject: [PATCH 12/15] OC-14611 Form Designer item name shown on the item tile should be truncated to the appropriate max length --- jsapp/xlform/src/view.rowDetail.coffee | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jsapp/xlform/src/view.rowDetail.coffee b/jsapp/xlform/src/view.rowDetail.coffee index 94b22e18ab..676ea4e5c9 100644 --- a/jsapp/xlform/src/view.rowDetail.coffee +++ b/jsapp/xlform/src/view.rowDetail.coffee @@ -370,12 +370,16 @@ module.exports = do -> @model.deduplicate @model.getSurvey(), @model.getSurvey().rowItemNameMaxLength ) - @model.on 'change:value', () => + @model.on 'change:value', () => @$el.closest('.survey__row__item').find('.card__header-name').html(@model.getValue()) update_view = () => @$el.find('input').eq(0).val(@model.get("value") || '') update_view() + setTimeout => + @$el.closest('.survey__row__item').find('.card__header-name').html(@model.getValue()) + , 1 + if @model._parent.get('label')? @model._parent.get('label').on 'change:value', update_view @makeRequired() From 8b7a1bb74382ae40f78b6c0d214a3b300dd6b0fc Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Mon, 19 Apr 2021 20:45:02 +0700 Subject: [PATCH 13/15] OC-14612 Remove horizontal resizing and bar --- jsapp/scss/stylesheets/partials/form_builder/_card.scss | 8 ++++++++ jsapp/xlform/src/view.row.coffee | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/jsapp/scss/stylesheets/partials/form_builder/_card.scss b/jsapp/scss/stylesheets/partials/form_builder/_card.scss index e76566319a..2e97712c6f 100644 --- a/jsapp/scss/stylesheets/partials/form_builder/_card.scss +++ b/jsapp/scss/stylesheets/partials/form_builder/_card.scss @@ -59,6 +59,14 @@ font-size: 15px; } } + + .ui-resizable-handle { + color: $cool-gray; + + &:hover { + border-top: 1px solid darken($cool-gray, 20%); + } + } } .card__header-name { diff --git a/jsapp/xlform/src/view.row.coffee b/jsapp/xlform/src/view.row.coffee index fceab9653f..3b01deac15 100644 --- a/jsapp/xlform/src/view.row.coffee +++ b/jsapp/xlform/src/view.row.coffee @@ -276,7 +276,8 @@ module.exports = do -> context = {warnings: []} @$label.resizable({ - containment: "parent" + containment: "parent", + handles: "s" }) questionType = @model.get('type').get('typeId') From 5ae484179ef3a214e800276648d704bab745eb40 Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Tue, 20 Apr 2021 20:49:00 +0700 Subject: [PATCH 14/15] OC-14801 Form Designer: Item Label textbox default height needs to be dynamic --- jsapp/xlform/src/view.row.coffee | 5 ----- jsapp/xlform/src/view.row.templates.coffee | 2 +- jsapp/xlform/src/view.rowDetail.coffee | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/jsapp/xlform/src/view.row.coffee b/jsapp/xlform/src/view.row.coffee index 3b01deac15..4aa072aeb7 100644 --- a/jsapp/xlform/src/view.row.coffee +++ b/jsapp/xlform/src/view.row.coffee @@ -275,11 +275,6 @@ module.exports = do -> @$header = @$('.card__header') context = {warnings: []} - @$label.resizable({ - containment: "parent", - handles: "s" - }) - questionType = @model.get('type').get('typeId') if ( $configs.questionParams[questionType] and diff --git a/jsapp/xlform/src/view.row.templates.coffee b/jsapp/xlform/src/view.row.templates.coffee index fbb2b8a6f9..875e766feb 100644 --- a/jsapp/xlform/src/view.row.templates.coffee +++ b/jsapp/xlform/src/view.row.templates.coffee @@ -63,7 +63,7 @@ module.exports = do ->
- +
diff --git a/jsapp/xlform/src/view.rowDetail.coffee b/jsapp/xlform/src/view.rowDetail.coffee index 676ea4e5c9..7dc431075d 100644 --- a/jsapp/xlform/src/view.rowDetail.coffee +++ b/jsapp/xlform/src/view.rowDetail.coffee @@ -270,6 +270,25 @@ module.exports = do -> value = value.replace /\t/g, ' ' return value }) + $textarea = $(this.rowView.$label) + if @model.get("value")? + setTimeout => + textareaScrollHeight = $textarea.prop('scrollHeight') + textAreaLineHeight = parseInt($textarea.css('line-height')) + maxLine = 3 + textAreaSetHeight = Math.min(textareaScrollHeight, (textAreaLineHeight * maxLine)) + 7 + $textarea.css("height", "") + $textarea.css("height", textAreaSetHeight) + $textarea.resizable({ + containment: "parent", + handles: "s" + }) + , 1 + else + $textarea.resizable({ + containment: "parent", + handles: "s" + }) return viewRowDetail.DetailViewMixins.hint = From 7c78ff532be3f81776577d8eb58450532f43a898 Mon Sep 17 00:00:00 2001 From: Agus Hilman Date: Thu, 22 Apr 2021 21:32:48 +0700 Subject: [PATCH 15/15] Update version to 2.1.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 06cec468b4..b7fb70c96d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kpi", - "version": "2.1.3", + "version": "2.1.4", "description": "form designer ui", "devDependencies": { "@mapbox/leaflet-omnivore": "^0.3.4",