Før ny chat
This commit is contained in:
parent
00028f10e5
commit
30053eb060
4 changed files with 1820 additions and 646 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -2,7 +2,6 @@ package com.kbs.kbsintranett;
|
|||
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
|
@ -36,6 +35,11 @@ public class FormsListFragment extends Fragment {
|
|||
private ProgressBar loadingSpinner;
|
||||
private TextView txtStatus;
|
||||
|
||||
// Regex for å finne tall i starten av tittelen (f.eks "10. Tittel")
|
||||
// Group 1 = Tallet
|
||||
// Group 2 = Resten av teksten (den rene tittelen)
|
||||
private static final Pattern TITLE_PATTERN = Pattern.compile("^(\\d+)[.\\s-]+\\s*(.*)");
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
|
|
@ -71,8 +75,7 @@ public class FormsListFragment extends Fragment {
|
|||
if (loadingSpinner != null) loadingSpinner.setVisibility(View.VISIBLE);
|
||||
if (txtStatus != null) txtStatus.setText("");
|
||||
|
||||
Log.d(TAG, "Starter henting av skjemaer...");
|
||||
|
||||
// Vi bruker standard-kallet som er raskt og effektivt
|
||||
RetrofitClient.getApiService().getFormsListMap().enqueue(new Callback<Map<String, GravityForm>>() {
|
||||
@Override
|
||||
public void onResponse(Call<Map<String, GravityForm>> call, Response<Map<String, GravityForm>> response) {
|
||||
|
|
@ -81,7 +84,6 @@ public class FormsListFragment extends Fragment {
|
|||
|
||||
if (response.isSuccessful() && response.body() != null) {
|
||||
Map<String, GravityForm> formMap = response.body();
|
||||
Log.d(TAG, "Fant " + formMap.size() + " skjemaer totalt.");
|
||||
|
||||
if (formMap.isEmpty()) {
|
||||
if (txtStatus != null) txtStatus.setText("Ingen skjemaer funnet.");
|
||||
|
|
@ -90,11 +92,11 @@ public class FormsListFragment extends Fragment {
|
|||
|
||||
List<GravityForm> visibleForms = new ArrayList<>();
|
||||
for (GravityForm form : formMap.values()) {
|
||||
// Sjekk om aktiv
|
||||
boolean isActive = form.isActive == null || !"0".equals(form.isActive);
|
||||
Integer sortOrder = getSortOrderFromDescription(form);
|
||||
|
||||
// Logg hva vi finner for hvert skjema
|
||||
Log.d(TAG, "Skjema: " + form.title + " | ID: " + form.id + " | Beskrivelse: " + form.description + " | Sorteringstall funnet: " + sortOrder);
|
||||
// Sjekk om vi finner et sorteringstall i tittelen
|
||||
Integer sortOrder = getSortOrderFromTitle(form.title);
|
||||
|
||||
if (form != null && form.title != null && isActive && sortOrder != null) {
|
||||
visibleForms.add(form);
|
||||
|
|
@ -102,16 +104,15 @@ public class FormsListFragment extends Fragment {
|
|||
}
|
||||
|
||||
if (visibleForms.isEmpty()) {
|
||||
Log.w(TAG, "Alle skjemaer ble filtrert bort. Sjekk at beskrivelsene starter med et tall.");
|
||||
if (txtStatus != null) txtStatus.setText("Ingen tilgjengelige skjemaer i appen.");
|
||||
if (txtStatus != null) txtStatus.setText("Ingen tilgjengelige skjemaer (sjekk nummerering i titler).");
|
||||
return;
|
||||
}
|
||||
|
||||
// Sorter basert på tallet vi fant
|
||||
// Sorter listen basert på tallet i tittelen
|
||||
Collections.sort(visibleForms, new Comparator<GravityForm>() {
|
||||
@Override
|
||||
public int compare(GravityForm f1, GravityForm f2) {
|
||||
return Integer.compare(getSortOrderFromDescription(f1), getSortOrderFromDescription(f2));
|
||||
return Integer.compare(getSortOrderFromTitle(f1.title), getSortOrderFromTitle(f2.title));
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -120,7 +121,6 @@ public class FormsListFragment extends Fragment {
|
|||
}
|
||||
|
||||
} else {
|
||||
Log.e(TAG, "Feil fra server: " + response.code());
|
||||
if (txtStatus != null) txtStatus.setText("Kunne ikke laste listen (Kode " + response.code() + ")");
|
||||
}
|
||||
}
|
||||
|
|
@ -129,29 +129,18 @@ public class FormsListFragment extends Fragment {
|
|||
public void onFailure(Call<Map<String, GravityForm>> call, Throwable t) {
|
||||
if (getContext() == null) return;
|
||||
if (loadingSpinner != null) loadingSpinner.setVisibility(View.GONE);
|
||||
Log.e(TAG, "Nettverksfeil", t);
|
||||
if (txtStatus != null) txtStatus.setText("Nettverksfeil: " + t.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Leter etter et tall i starten av beskrivelsen.
|
||||
* Håndterer HTML-tags og mellomrom.
|
||||
* Henter ut tallet fra starten av tittelen.
|
||||
* Returnerer null hvis tittelen ikke starter med et tall.
|
||||
*/
|
||||
private Integer getSortOrderFromDescription(GravityForm form) {
|
||||
if (form.description == null || form.description.isEmpty()) {
|
||||
return null; // Skjules
|
||||
}
|
||||
|
||||
// 1. Fjern HTML-tags for å få ren tekst (f.eks "<p>10.</p>" -> "10.")
|
||||
String cleanText = Html.fromHtml(form.description, Html.FROM_HTML_MODE_COMPACT).toString().trim();
|
||||
|
||||
// 2. Regex: Finn første sekvens av tall (\d+)
|
||||
// ^\D* betyr "Start på linjen, ignorer ikke-tall (som bokstaver/tegn) i starten"
|
||||
Pattern p = Pattern.compile("^\\D*(\\d+)");
|
||||
Matcher m = p.matcher(cleanText);
|
||||
|
||||
private Integer getSortOrderFromTitle(String title) {
|
||||
if (title == null) return null;
|
||||
Matcher m = TITLE_PATTERN.matcher(title.trim());
|
||||
if (m.find()) {
|
||||
try {
|
||||
return Integer.parseInt(m.group(1));
|
||||
|
|
@ -162,9 +151,27 @@ public class FormsListFragment extends Fragment {
|
|||
return null; // Ingen tall funnet -> Skjules
|
||||
}
|
||||
|
||||
/**
|
||||
* Henter ut selve navnet på skjemaet (uten tallet foran).
|
||||
* "10. Ansatte" -> "Ansatte"
|
||||
*/
|
||||
private String getCleanTitle(String title) {
|
||||
if (title == null) return "";
|
||||
Matcher m = TITLE_PATTERN.matcher(title.trim());
|
||||
if (m.find()) {
|
||||
// Group 2 er resten av teksten etter tallet og punktum/mellomrom
|
||||
return m.group(2);
|
||||
}
|
||||
return title; // Fallback hvis regex ikke matcher (skal ikke skje pga filtreringen over)
|
||||
}
|
||||
|
||||
private void addFormButton(GravityForm form) {
|
||||
Button button = new Button(getContext());
|
||||
button.setText(form.title.toUpperCase());
|
||||
|
||||
// VIS VASKET TITTEL PÅ KNAPPEN
|
||||
String displayTitle = getCleanTitle(form.title);
|
||||
button.setText(displayTitle.toUpperCase());
|
||||
|
||||
button.setTextColor(Color.WHITE);
|
||||
button.setBackgroundColor(Color.parseColor("#0069B3")); // KBS Blå
|
||||
button.setTextSize(14);
|
||||
|
|
|
|||
|
|
@ -11,13 +11,14 @@ public class GravityField {
|
|||
@SerializedName("type")
|
||||
public String type;
|
||||
|
||||
@SerializedName("inputType")
|
||||
public String inputType;
|
||||
|
||||
@SerializedName("label")
|
||||
public String label;
|
||||
|
||||
// --- DETTE ER FELTET SOM MANGLER ---
|
||||
@SerializedName("adminLabel")
|
||||
public String adminLabel;
|
||||
// -----------------------------------
|
||||
|
||||
@SerializedName("description")
|
||||
public String description;
|
||||
|
|
@ -47,14 +48,20 @@ public class GravityField {
|
|||
@SerializedName("isHidden")
|
||||
public boolean isHidden;
|
||||
|
||||
// NYTT: For å sjekke om feltet er Read Only (f.eks dato i refusjon)
|
||||
@SerializedName("gwreadonly_enable")
|
||||
public boolean readOnly;
|
||||
|
||||
@JsonAdapter(ConditionalLogicAdapter.class)
|
||||
@SerializedName("conditionalLogic")
|
||||
public ConditionalLogic conditionalLogic;
|
||||
|
||||
// For å lese Populate Anything-regler
|
||||
@SerializedName("gppa-values-templates")
|
||||
public java.util.Map<String, String> gppaTemplates;
|
||||
|
||||
@SerializedName("gpnfForm")
|
||||
public String gpnfForm;
|
||||
|
||||
public static class Choice {
|
||||
@SerializedName("text")
|
||||
public String text;
|
||||
|
|
@ -65,10 +72,10 @@ public class GravityField {
|
|||
|
||||
public static class ConditionalLogic {
|
||||
@SerializedName("actionType")
|
||||
public String actionType; // "show" eller "hide"
|
||||
public String actionType;
|
||||
|
||||
@SerializedName("logicType")
|
||||
public String logicType; // "all" eller "any"
|
||||
public String logicType;
|
||||
|
||||
@SerializedName("rules")
|
||||
public List<Rule> rules;
|
||||
|
|
@ -79,7 +86,7 @@ public class GravityField {
|
|||
public String fieldId;
|
||||
|
||||
@SerializedName("operator")
|
||||
public String operator; // "is", "isnot", etc.
|
||||
public String operator;
|
||||
|
||||
@SerializedName("value")
|
||||
public String value;
|
||||
|
|
|
|||
1310
hele_prosjektet.txt
1310
hele_prosjektet.txt
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue